gpt4 book ai didi

一对多关系上的 SQL 连接,其中没有一个与给定值匹配

转载 作者:行者123 更新时间:2023-12-04 13:55:27 25 4
gpt4 key购买 nike

说我有两张 table

User
-----
id
first_name
last_name

User_Prefs
-----
user_id
pref

User_Prefs 中的示例数据可能是
user_id | pref
2 | SMS_NOTIFICATION
2 | EMAIL_OPT_OUT
2 | PINK_BACKGROUND_ON_FRIDAYS

并且某些用户可能在 User_Prefs 中没有相应的行。

我需要查询没有 EMAIL_OPT_OUT 作为他们(可能很多,可能没有)User_Pref 行之一的任何用户的名字和姓氏。
SELECT DISTINCT u.* from User u
LEFT JOIN User_Prefs up ON (u.id=up.user_id)
WHERE up.pref<>'EMAIL_OPT_OUT'

让我每个人都至少有一行不是“EMAIL_OPT_OUT”,这当然不是我想要的。我希望每个人都没有与“EMAIL_OPT_OUT”匹配的行。

有没有办法让连接类型和连接条件过滤掉我想在这里遗漏的行?或者我需要一个子查询?

最佳答案

我个人认为“where notexists”类型的子句可能更容易阅读,但这里有一个带有连接的查询,它做同样的事情。

select distinct u.* from User u
left join User_Prefs up ON u.id = up.user_id and up.pref = 'EMAIL_OPT_OUT'
where up.user_id is null

关于一对多关系上的 SQL 连接,其中没有一个与给定值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3294306/

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