MySQL加入 - 检查某人是否有条目

时间:2013-03-27 11:12:24

标签: mysql

MYSQL。让我介绍我的表格,缩小:

我有一个表users,其中包含id行。

我的表tasks包含行idtitle

我有一个表users_tasks,它们将两者连接起来,行iduid(对于users.id)和tid(对于tasks.id)。

现在,如果已将6 ID分配给该任务的用户(= users_tasks中的条目存在uid,我希望获得所有任务的列表,并提供相关信息) = 6

开始很简单,得到所有任务:SELECT * FROM tasks但现在是什么?我尝试继续LEFT JOIN到users_tasks,但结果太奇怪了,看起来不正确的方向......我需要像条件连接这样的东西吗?我很困惑

我喜欢的结果看起来像这样(假设有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

1 个答案:

答案 0 :(得分:1)

您根本不需要加入。

SELECT
*
FROM
tasks
WHERE EXISTS (SELECT 1 FROM users_tasks ut WHERE tasks.id = ut.tid AND ut.uid = 6)

这应该比连接执行得更快,因为EXISTS ()会在找到行后立即返回,而连接会返回所有匹配的行。