gpt4 book ai didi

sql - 使用左连接并检查该行是否存在以及 where 子句中的另一个检查

转载 作者:行者123 更新时间:2023-12-02 07:38:37 25 4
gpt4 key购买 nike

我有下表:

Users
Banned

SELECT u.*
FROM Users
WHERE u.isActive = 1
AND
u.status <> 'disabled'

我不想包含用户可能位于“禁止”表中的任何行。

最好的方法是什么?

我可以在 where 子句中放置一个子查询,这样它就会执行如下操作:

u.status <> 'disabled' and not exist (SELECT 1 FORM Banned where userId = @userId)

我认为最好的方法是进行 LEFT JOIN,我该怎么做?

最佳答案

根据this answer ,在 SQL-Server 中使用 NOT EXISTSLEFT JOIN/IS NULL

更高效
SELECT  *
FROM Users u
WHERE u.IsActive = 1
AND u.Status <> 'disabled'
AND NOT EXISTS (SELECT 1 FROM Banned b WHERE b.UserID = u.UserID)

编辑

为了完整起见,这就是我使用 LEFT JOIN 的方式:

SELECT  *
FROM Users u
LEFT JOIN Banned b
ON b.UserID = u.UserID
WHERE u.IsActive = 1
AND u.Status <> 'disabled'
AND b.UserID IS NULL -- EXCLUDE ROWS WITH A MATCH IN `BANNED`

关于sql - 使用左连接并检查该行是否存在以及 where 子句中的另一个检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13128635/

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