【发布时间】:2014-07-08 09:22:18
【问题描述】:
假设我有一个如下表:
row_id record_id tag_id
1 1 2
2 1 3
3 2 2
4 2 4
5 3 2
6 3 3
我想获取那些他们有记录的记录 ID 值为 2 但没有 3,在这种情况下,我想获取记录 ID 2。我只能想到一个带有 3 个选择的 SQL 语句,但它看起来很笨重.有没有更简单、更快的方法来实现这一目标?谢谢。
编辑:
我得到的 SQL:
SELECT record_id
FROM table_A
WHERE record_id NOT IN (SELECT record_id
FROM table_A
WHERE record_id IN (SELECT record_id
FROM table_A
WHERE tag_id = 2)
AND tag_id =3)
AND record_id IN (SELECT record_id FROM table_A WHERE tag_id = 2) GROUP BY record_id
并且每个record_id 可能有1 到任意数量的tag_id 值。
【问题讨论】:
-
请向我们展示您的代码,以便我们帮助您改进它。
-
...GROUP BY record_id HAVING SUM (tag_id=3)=0 -
欢迎来到 Stack Overflow。请阅读Stack Overflow: How to ask 和Jon Skeet's Question Checklist,了解如何提出一个好的问题,从而产生好的有用的答案。
标签: sql postgresql selection multiple-value