gpt4 book ai didi

mysql - 根据不存在的记录查询SQL

转载 作者:行者123 更新时间:2023-11-29 21:03:28 24 4
gpt4 key购买 nike

现在使该查询工作一段时间时遇到问题:

我有 3 张 table :

table 1. projects
-> id, name, ....

table 2. members
-> user_id, project_id, ...

table 3. links
-> user_id, project_id, is_binded

我试图实现的目标:

projects获取所有projects.idprojects.name,但仅限与用户耦合的项目 (members.user_id)

AND 其中 is_binded = false(但仅限于用户的项目)

或者

(这部分我无法弄清楚)当不存在包含 user_id、project_id 和 is_binded 列的记录时。因此,当项目和 user_id 尚未出现在链接表中时。

基本上,查询应该返回未绑定(bind)的用户或链接表中没有该用户的记录的所有项目。

提出查询:

SELECT p.id, p.name FROM projects p 
JOIN links ml ON p.id = ml.project_id
JOIN members m on p.id = m.project_id
WHERE m.user_id = #{u_id}
AND
(ml.is_binded IS NULL OR (ml.is_binded = 0 AND ml.user_id = #{u_id}))

返回不在表中但不基于用户的项目。当记录位于带有 project_iduser_idlinks 中时,我没有获得包含其他 user_id 的列表已经没有了#{u_id} 是我在 ruby​​ 中使用的变量。

我希望我的问题有点清楚!

最佳答案

对于 SQL Server 试试这个

SELECT DISTINCT p.*
FROM projects p
INNER JOIN members m ON m.project_id = p.id
LEFT JOIN links l ON l.project_id = p.id and l.user_id = m.user_id
WHERE m.user_id = ?
AND IFNULL(is_binded,'false') = 'false'

关于mysql - 根据不存在的记录查询SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37021842/

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