2012-09-08 62 views
0

我有MySQL的表結構:Mysql的COUNT和IF使用

| uid  | itemid 
| ------------------- 
| 1001 | 9999 
| 1001 | 8888 
| 2002 | 8888 
| ...  | ... 

UID爲itemid不是唯一列。 Bun uid + itemid是獨特的組合。

我需要按itemid計數行。我使用下一個查詢:

SELECT itemid, COUNT(*) 
FROM unlikes 
WHERE itemid IN ('9999', '8888') GROUP BY itemid; 

這個工程!

接下來,我需要知道哪一行有混凝土uid。我用:

SELECT itemid, COUNT(*), IF (uid = '1001', TRUE, FALSE) toggled 
FROM unlikes 
WHERE itemid IN ('9999', '8888') GROUP BY itemid;' 

不工作。如果我有不止一行itemid = 8888,那麼比觸發= FALSE。如果組中的一個有uid = 1001,我需要切換= TRUE;

+2

替換'IF(UID = '1001',TRUE,FALSE)'由'總和(情況下,當UID = '1001',那麼1否則爲0)' – danihp

回答

1
SELECT itemid, COUNT(*), 
CASE WHEN uid = 1001 THEN TRUE ELSE FALSE end AS toggled 
FROM unlikes 
WHERE itemid IN ('9999', '8888') GROUP BY itemid; 
+0

我發現此解決方案:'COUNT(IF(UID = 1001,NULL))AS切換'它的壞? –

+0

@SLonoed這是什麼意思? – hims056

+0

使用上述查詢,如果'9999'和'1001'也返回'TRUE'。正確? –