在SQL中,是否存在类似“IN”的内容,但是对于多个“AND”条件?

时间:2014-06-05 14:34:23

标签: sql relational-division

在SQL中,是否有" IN",但是对于多个" AND"条件而不是多个" OR"条件?

编辑:我现在看到这是一个愚蠢的问题。我真正的意思是: 如果我有这样的表:

_id time_entry_id tag_id

1 1 1

2 1 2

3 1 3

4 2 2

5 2 3

是否有SQL命令只返回time_entry_ids,其中tag_id = 1 AND 2 AND 3.

1 个答案:

答案 0 :(得分:1)

您所描述的内容称为关系分部。 SQL中没有运算符。

有两种常见的解决方案。

第一个解决方案是为您要查找的每个值执行自联接。这样,您可以在WHERE子句中编写一个引用同一列的表达式,并比较三个不同的值。

SELECT t1.time_entry_id
FROM table_like_this t1
JOIN table_like_this t2 USING (time_entry_id)
JOIN table_like_this t3 USING (time_entry_id)
WHERE t1.tag_id = 1 AND t2.tag_id = 2 AND t3.tag_id = 3;

第二个解决方案是查找所有任何所需值的行,如果找到一组包含所有这三个行的行,那么该组将通过您的关系部门搜索范围。

SELECT time_entry_id
FROM table_like_this
WHERE tag_id IN (1,2,3)
GROUP BY time_entry_id
HAVING COUNT(DISTINCT tag_id) = 3;