我不知道如何詞組這個問題,所以我舉一個例子:如何才能爲特定列選擇只有多個匹配的行?
假設有一個叫tagged
有兩列的表:tagger
和taggee
。 SQL查詢看起來像怎樣才能返回多行中的taggee
(s)?也就是說,它們已被任何tagger
標記了2次或更多次。
我想'通用'的SQL查詢,而不是隻適用於特定DBMS的東西。
編輯:添加「由任何 tagger標記2次或更多次」。
我不知道如何詞組這個問題,所以我舉一個例子:如何才能爲特定列選擇只有多個匹配的行?
假設有一個叫tagged
有兩列的表:tagger
和taggee
。 SQL查詢看起來像怎樣才能返回多行中的taggee
(s)?也就是說,它們已被任何tagger
標記了2次或更多次。
我想'通用'的SQL查詢,而不是隻適用於特定DBMS的東西。
編輯:添加「由任何 tagger標記2次或更多次」。
HAVING
可以在聚合函數的結果操作被加了標籤。所以,如果你有這樣的數據:
Row tagger | taggee
--------+----------
1. Joe | Cat
2. Fred | Cat
3. Denise | Dog
4. Joe | Horse
5. Denise | Horse
這聽起來像你想貓,馬。
若要取得多個列中的TAGGEE的,可以執行:
SELECT taggee, count(*) FROM tagged GROUP BY taggee HAVING count(*) > 1
話雖這麼說,當你說「選擇一個特定的列只與多命中行」,這行做你要?您是否想要爲行裝訂或行?
select distinct t1.taggee from tagged t1 inner join tagged t2
on t1.taggee = t2.taggee and t1.tagger != t2.tagger;
會給你所有誰被標記由一個以上的惡搞
按標籤分組不會確保重複項是針對相同標籤的。 – 2011-01-23 05:43:54