我有这段代码及其临时表,因此您可以运行它。
create table #student
(
id int identity(1,1),
firstname varchar(50),
lastname varchar(50)
)
create table #quiz
(
id int identity(1,1),
quiz_name varchar(50)
)
create table #quiz_details
(
id int identity(1,1),
quiz_id int,
student_id int
)
insert into #student(firstname, lastname)
values ('LeBron', 'James'), ('Stephen', 'Curry')
insert into #quiz(quiz_name)
values('NBA 50 Greatest Player Quiz'), ('NBA Top 10 3 point shooters')
insert into #quiz_details(quiz_id, student_id)
values (1, 2), (2, 1)
drop table #student
drop table #quiz
drop table #quiz_details
正如您所看到的,勒布朗·詹姆斯参加了 NBA 前 10 名三分射手测验,而斯蒂芬·库里则参加了 NBA 50 名最伟大球员测验。
我想要的只是得到他们还没有采取的东西,例如勒布朗还没有参加 50 名最伟大球员的测验,所以我想要的是这样的。
id quiz_name firstname lastname
----------------------------------------------------
1 NBA 50 Greatest Player Quiz NULL NULL
我想要 2 个参数,勒布朗的 id 和测验的 id,这样我就知道勒布朗或斯蒂芬还没有参加,但是如果student_id
仍然为空?
我的尝试:
select
QD.id,
Q.quiz_name,
S.firstname,
S.lastname
from
#quiz_details QD
inner join
#quiz Q on Q.id = QD.quiz_id
inner join
#student S on S.id = QD.student_id