MYSQL。让我介绍一下我的桌子,缩小了:
我有一张表,上面有一行。
我有一个users表,其中有idtasks行。
我有一个表id将它们连接起来,其中的行分别为titleusers_tasks(对于users.id)和id(对于tasks.id)。
现在,如果ID为“cc>”的用户被分配给该任务,则我想列出所有任务的列表加上信息(如果uid中的条目存在于tid6
开始很简单,完成所有任务: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/

10-10 21:36
查看更多