在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.
答案 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;