2013-11-24 22 views
1

我有一個表:我的SQL DISTINCT和計數,如果

enter image description here

我想寫一個查詢,以顯示獨特的AdID面向特定用戶:

SELECT DISTINCT Adid FROM Message WHERE (MesFrom =1 OR MesTo = 1) AND (MesFrom =2 OR MesTo = 2) ORDER BY ID DESC 

該工程確定

但現在我想添加新消息的數量,所以我需要類似於

SELECT Count(IF(New=1,1,0)) AS countNew FROM Message 

但需要將其與之前的查詢相結合

輸出必須是這樣的:

43個新3 44個新的1

請幫助)

回答

2

嘗試

SELECT Adid, SUM(New = 1) new 
    FROM Message 
WHERE (MesFrom = 1 OR MesTo = 1) 
    AND (MesFrom = 2 OR MesTo = 2) 
GROUP BY Adid 

輸出:

 
| ADID | NEW | 
|------|-----| 
| 42 | 2 | 
| 43 | 3 | 
| 44 | 1 | 

這裏是SQLFiddle演示

+0

完美的作品!謝謝!也許你可以幫助另一個。我在SQL新的,必須嘗試100點的變體之前,我所期望的 SELECT DISTINCT LEAST(Message.MesFrom,Message.MesTo)AS USER1 ,GREATEST(Message.MesFrom,Message.MesTo)AS user2的 FROM消息WHERE MesFrom = 1 OR MesTo = 1 ORDER BY ID DESC 這將輸出用戶從同一張表,現在我嘗試添加新的消息計數... –

+0

@AndreyPopov不客氣。這裏不鼓勵通過改變上下文或範圍來稀釋問題。因此,請考慮創建另一個問題,並將所有詳細信息與示例數據(以文本形式,而不是圖片)和期望的輸出結合在一起。其他SO成員或我將很樂意爲您提供幫助。 – peterm

1
SELECT DISTINCT Adid , Count(IF(New=1,1,0)) AS countNew 
FROM Message 
WHERE (MesFrom =1 OR MesTo = 1) AND (MesFrom =2 OR MesTo = 2) 
ORDER BY ID DESC 

普萊舍檢查是否它的工作。

+1

在sql查詢後添加LIMIT 100 –

+0

這一個不起作用(它只輸出一行,因爲DISTINCT也會檢查New列的唯一值( –

+1

)謝謝Lakmal。將來會計劃限制,現在我只是嘗試做一個結構) –