2011-05-04 13 views

回答

11

對於任何特定行標籤不能既是17和31 You need

SELECT id 
FROM table 
WHERE Tag in (17, 31) 
GROUP BY id 
HAVING COUNT(DISTINCT Tag) = 2 
+0

你忘記了Tag和in之間的空格。仍然+1難度:) – Damp 2011-05-04 21:06:33

+0

@Damp - 謝謝,已經發現並修復了! – 2011-05-04 21:07:04

0

您所要求的一排標籤爲17和31的值...在同一時間。你可能想這(另外,WHERE 1是不需要的):

SELECT DISTINCT id FROM table WHERE Tag=17 OR Tag=31 

編輯:閱讀一些其他的答案後,我決定去瘋狂與此有關。

SELECT A.id 
FROM table A JOIN table B ON A.id = B.id 
WHERE A.Tag=17 AND B.Tag=31; 
+0

+2對於瘋狂加入,-1對於混淆新手:-) – Johan 2011-05-04 21:21:06

+0

糟糕,不會返回正確的結果,對不起,請參閱您的代碼和@ martin的區別 – Johan 2011-05-04 21:25:42

+1

難道你不想'WHERE A.Tag = 17和B.Tag = 31'?我沒有測試過,但是不是每個記錄都符合當前的條件?加入'(2,17)'與自己'(2,17)'並且'A.Tag'和'B.Tag'都是'IN(17,31)'。 – Wiseguy 2011-05-04 21:26:43

2

機器是邏輯,做你要求他們做的事......你的期望在這種情況下是錯誤的。

標籤17 AND標籤31根據boolean math的條件應同時滿足以產生結果。