2015-08-30 26 views
-1

我有這個表tagMusic困難的SQL請求?

id tagid musicid 
--------------------- 
1  1  141 
2  4  141 
3  3  102 

所以我需要說: 帶我誰擁有標籤ID爲1,4(例如)的所有音樂ID。

+0

因爲我命名爲「數字」的另一列,我需要知道有多少標籤識別他們是爲了音樂 – Raph

+1

沒有..'難'是不是。一個模糊的標題..它是。 – user2864740

+0

那麼,你的解決方案是什麼? – Raph

回答

1

它的一種方法是隻選擇那些標籤和算你每個標籤有多少獨特的結果了:

SELECT musicid 
FROM  tagmusic 
WHERE tagid IN (1, 4) 
GROUP BY musicid 
HAVING COUNT(*) = 2 
+0

OMG這很簡單,我有最後一個問題,有什麼服務HAVING COUNT? – Raph

+0

'having'是一個條件子句,它在** group by之後應用**,因此您可以使用它來過濾聚合表達式。在這裏,我將它用於具有**兩個**標籤(計數爲2)的文件管理器'musicid',以便去除'tagid'爲1或4的'musicid'。 – Mureinik

+0

嘗試,但在這種情況下,這是一個很好的解決方案,但我的表是可擴展的,並且我將有1個音樂的超過2個標記... – Raph