MYSQL。让我介绍一下我的桌子,缩小了:
我有一张表,上面有一行。
我有一个users
表,其中有id
和tasks
行。
我有一个表id
将它们连接起来,其中的行分别为title
、users_tasks
(对于users.id)和id
(对于tasks.id)。
现在,如果ID为“cc>”的用户被分配给该任务,则我想列出所有任务的列表加上信息(如果uid
中的条目存在于tid
=6
)
开始很简单,完成所有任务:users_tasks
但是现在怎么办?我试着继续用左连接uid
,但结果太奇怪了,似乎没有正确的方向。。。我需要像条件连接这样的东西吗?我很困惑
我喜欢的结果是这样的(假设有4个任务,用户6被分配到1和3):
tasktitle | entry for user 6
-----------------------------
task 1 | 1
task 2 | 0
task 3 | 1
task 4 | 0
编辑以评论tombom:
SELECT
*, EXISTS (SELECT 1 FROM users_tasks ut WHERE tasks.id = ut.tid AND ut.uid = 6)
FROM
tasks
最佳答案
你根本不需要加入。
SELECT
*
FROM
tasks
WHERE EXISTS (SELECT 1 FROM users_tasks ut WHERE tasks.id = ut.tid AND ut.uid = 6)
这应该比连接执行得更快,因为找到一行时,
EXISTS ()
将立即返回,而连接将返回所有匹配的行。关于mysql - MySQL Join-检查某人是否有条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15657447/