在SQL中,是否有类似“IN”的东西,但用于多个“AND”条件而不是多个“OR”条件?
编辑:我现在明白这是一个愚蠢的问题。我真正的意思是:
如果我有一个这样的表:
_id 时间_条目_id 标签_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。
你所描述的称为关系划分。 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;
第二个解决方案是查找所有行any您正在查找的值的行,如果您找到一组包含所有这三个行的行,则该组将通过您的关系除法搜索。
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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)