SQL查询来标记从一个特定的用户
问题描述:
完成的任务,这些都是我的表:SQL查询来标记从一个特定的用户
表任务
id label
----------
1 Task 1
2 Task 2
3 Task 3
4 Task 4
5 Task 5
6 Task 6
7 Task 7
7 Task 8
表user_tasks
id id_user id_task
------------------
1 1 1
2 1 2
3 1 4
4 2 1
5 3 1
我有这个疑问,我认为是工作:
SELECT t.id, t.label as text, IF(u.id_user IS NULL, 0, 1) as done
FROM tasks AS t
LEFT JOIN user_tasks AS u ON t.id = u.id_task
WHERE u.id_user = 1
OR u.id_user IS NULL
ORDER BY id DESC
所以,如果我运行该查询,我得到这个成功的响应:
id text done
----------------
8 Task 8 0
7 Task 7 0
6 Task 6 0
5 Task 5 0
4 Task 4 1
3 Task 3 0
2 Task 2 1
1 Task 1 1
但如果我把另一个用户ID不具有任何的任务尚未完成,例如像5我得到这样的结果:
id text done
----------------
8 Task 8 0
7 Task 7 0
6 Task 6 0
5 Task 5 0
3 Task 3 0
因此,所有的任务,减去已经为user_tasks表上的不同用户设置的任务。
我在做什么错? 谢谢!
你使用MySQL或MS SQL Server删除
WHERE
条款(包括u.id_user IS NULL
。)? (不要标记没有涉及的产品。) – jarlhMySql,我没有阅读它指定它只是MS的sql服务器描述。我删除它。对不起,关于该 – Jan
如果你移动'u.id_user = 1'到'ON'子句,你可以删除'WHERE'子句(包括'u.id_user IS NULL') – jarlh