作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
经过几十次尝试,我仍然得到错误的结果,所以我想我最好寻求帮助。
表格:
labels
id, user_id, name
messages_labels
id, message_id, label_id
labels.id
指的是message_labels.label_id
如何在给定 message-id 和 user_id 的情况下获得未使用标签的正确结果?我所说的未使用标签是指在 message_labels
中没有针对给定消息 ID 的条目的标签,基本上只是选择要添加到尚未用于此消息的消息的标签。
这意味着……
SELECT l.id, l.name
FROM labels l
INNER/LEFT JOIN messages_labels ml ON (l.id=ml.label_id)
WHERE... user_id=:user_id ...
... and `message_id <> :message_id`
??
最佳答案
这应该有效:LEFT JOIN
在 label_id 和消息 id 上,任何没有 ML 记录的东西都是你想要的
SELECT
l.id, l.name
FROM labels l
LEFT JOIN message_labels ml
ON l.id = ml.label_id
AND message_id = :message_id
WHERE l.user_id = :user_id
AND ml.id IS NULL
关于sql - 如何在此查询中正确使用 LEFT JOIN IS NULL 或 NOT EXISTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11782188/
我是一名优秀的程序员,十分优秀!