2013-01-15 68 views
2

存在我有一個名爲votes與列idimage_iduser_idtime表。MySQL的檢查,如果值

如何在結果中添加一個bool,如果某個特定的user_id是每個image_id的投票之一?

SELECT image_id, 
count(image_id) as vote_count 
FROM votes 
GROUP BY image_id 
ORDER BY vote_count DESC 

我試圖if(user_id = 18, 1, 0) as have_voted但它並不適用於每個image_id工作。

+0

我真的不理解你正在試圖收集什麼。由於您通過圖像ID進行聚合,因此您會丟失用戶標識中的特定行。這聽起來像使用'IN'子句可能是你想要的? – Scotch

+0

我需要票額,並知道如果當前用戶已經投票或不爲每個圖像。 –

回答

6

所有行相加,其中user_id是你想要的,和chacking如果這個總和大於0是什麼?

SELECT image_id, 
count(image_id) as vote_count, 
SUM(IF(user_id = 18,1,0)) > 0 AS hasUser18 
FROM votes 
GROUP BY image_id 
ORDER BY vote_count DESC 
+4

一個更簡單的表達是'MAX(USER_ID = 1)'。 –

+0

感謝,這工作,因爲我想要的。 '總和(USER_ID = 1)'和'MAX(USER_ID = 1)'做太 –

+1

我很想看到SUM的'性能(IF(USER_ID = 18,1,0))''VS總和(USER_ID = 1)'vs'max(user_id = 1)' – Ray