gpt4 book ai didi

如果其他参数为 null,SQL 正确的连接方式

转载 作者:行者123 更新时间:2023-12-01 18:10:24 25 4
gpt4 key购买 nike

我有这段代码及其临时表,以便您可以运行它。

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

最佳答案

这应该可以帮助您开始:

-- filter out the student and quiz you want
DECLARE @qid INT = 1
DECLARE @sid INT = 1

SELECT *
FROM #student AS s
INNER JOIN #quiz AS q -- you want the quiz
ON 1=1
LEFT OUTER JOIN #quiz_details AS qd -- left join here to get result where rows not found
ON qd.id = q.id
AND qd.student_id=s.id
WHERE s.id = @sid
AND q.id = @qid
AND qd.id IS NULL -- only return quizes not taken

关于如果其他参数为 null,SQL 正确的连接方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com