我不知道如何用这句话来表达,所以我举一个例子:
假设有一个名为tagged
的表格,其中有两列:tagger
和taggee
。 SQL查询返回多行中的taggee
会是什么样的?也就是说,它们被任何tagger
标记了2次或更多次。
我想要一个'通用'SQL查询,而不是仅适用于特定DBMS的东西。
编辑:添加“任何标记器标记2次或更多次。”
答案 0 :(得分:9)
HAVING
可以对聚合函数的结果进行操作。所以如果你有这样的数据:
Row tagger | taggee
--------+----------
1. Joe | Cat
2. Fred | Cat
3. Denise | Dog
4. Joe | Horse
5. Denise | Horse
听起来你想要猫,马。
要获取多行的标记,您可以执行:
SELECT taggee, count(*) FROM tagged GROUP BY taggee HAVING count(*) > 1
话虽如此,当您说“仅选择具有特定列的多个匹配的行”时,您想要哪个行?您想要Cat的行 1 ,还是 2 行?
答案 1 :(得分:0)
select distinct t1.taggee from tagged t1 inner join tagged t2
on t1.taggee = t2.taggee and t1.tagger != t2.tagger;
将为您提供已被多个标记器标记的所有标记