gpt4 book ai didi

mysql - 仅当 INNER JOIN 记录存在时才在 INNER JOIN 上添加 sql 语句条件

转载 作者:行者123 更新时间:2023-11-29 10:09:38 27 4
gpt4 key购买 nike

仅当连接表中存在记录时,我才尝试根据连接表中的条件从用户表中选择一行。如果记录不存在,我想返回该行。我只想在存在 INNER JOIN 记录且 contact_blocked != 1 时不返回该行。

通过下面的语句,当 users_to_users 记录存在且 contact_blocked = 0 的值时,我实现了我想要的效果。返回该行。当联系人被阻止时,不会返回任何内容。那就好了。但是,此外,当尚不存在 INNER JOIN 记录时,我仍然想返回包含用户的行,因为它们尚未被阻止并且尚不存在关系。不知道该怎么做。

这就是我想要的,没有加入:

SELECT users.user_id 
FROM users
WHERE users.username = 'Danny Boy'

这是我想要的连接:

SELECT users.user_id 
FROM users
INNER JOIN users_to_users
ON users.user_id = users_to_users.user_id
AND users_to_users.contact_user_id ='123'
WHERE users.username = 'Danny Boy'
AND users_to_users.contact_blocked != 1

我希望仅当存在连接记录时才应用连接条件。否则我想申请第一个案例。

编辑

期望的结果。

如果users_to_users记录存在,则仅在users_to_users.contact_blocked != 1的情况下返回users中用户名“Danny Boy”的行。

如果users_to_users记录不存在,则返回users中“Danny Boy”的行

最佳答案

我想你想要:

SELECT u.user_id 
FROM users u LEFT JOIN
users_to_users utu
ON u.user_id = utu.user_id AND utu.contact_user_id = '...'
WHERE u.username = '...' AND
(utu.contact_blocked = 1 OR utu.contact_blocked IS NULL);

关于mysql - 仅当 INNER JOIN 记录存在时才在 INNER JOIN 上添加 sql 语句条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51227568/

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