gpt4 book ai didi

mysql - 反向内连接查询

转载 作者:行者123 更新时间:2023-11-28 23:18:01 27 4
gpt4 key购买 nike

好吧,我正在尝试反转这个 INNER JOIN 查询。我想选择验证表中没有字段的所有帐户

我试过这种方式(试过这个作为尝试)但失败了

SELECT users.*,
user_activations.user_id as user_ID
FROM users
INNER JOIN user_activations ON
user_activations.user_id = users.ID
WHERE user_activations.user_id IS NULL

最佳答案

您可以通过多种方式做到这一点。请注意使用 sql 别名来缩短代码。

1)user_activations PK(或非空列)上使用 LEFT JOINIS NULL 条件这被称为 ANTI-JOIN

SELECT 
u.*
FROM users u
LEFT JOIN user_activations ua ON
ua.user_id = u.ID
WHERE ua.user_id IS NULL

2) 使用NOT EXISTS

SELECT 
u.*
FROM users u
WHERE NOT EXISTS (
SELECT *
FROM user_activations ua
WHERE ua.user_id = u.ID
)

请注意,在 (1) 选项中,我们正在使用 LEFT JOIN 结合 WHERE 条件,该条件应用于整个连接的数据集并有效地删除将与 INNER JOIN 匹配(两个表中的数据通过公共(public)列值的交集)。

在 (2) 选项中,我们有一个矛盾的 EXISTS 运算符,使用 NOT 关键字,当根据里面的 WHERE 子句找到任何匹配行时一个子查询,从输出中丢弃它。

关于mysql - 反向内连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007149/

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