簡體   English   中英

如何在 MySQL 中進行分組和計數?

[英]How to group and count in MySQL?

我正在嘗試編寫一個查詢來提取發送給他們朋友的未刪除消息的總數。 這是表結構的屏幕截圖:

在此處輸入圖像描述

我試圖實現的輸出結果如下:

 id          messages_count
 ---------------------------
 1            4562
 2            7255

這是我到目前為止嘗試過的查詢:

SELECT u.id, count( CASE WHEN m.is_deleted = false THEN m.is_deleted END ) as messages_count
FROM users u
inner join messages m on u.id = m.to_id
GROUP BY u.id
ORDER BY u.id;

您是否嘗試過類似的方法?

SELECT u.id, count( m ) as messages_count
FROM users u
inner join messages m on u.id = m.to_id and m.is_deleted = false
GROUP BY u.id
ORDER BY u.id;

WHERE子句中使用IS關鍵字。 嘗試這個:

SELECT u.id, count( m.id ) as messages_count
FROM users u
INNER JOIN messages m on u.id = m.to_id
WHERE m.is_deleted is FALSE
GROUP BY u.id
ORDER BY u.id;

除了傑克懷特的回答,你也可以這樣使用 sum :

SELECT u.id,
   sum( CASE WHEN m.is_deleted = false THEN 1 else 0 END ) as messages_count
FROM users u
inner join messages m on u.id = m.to_id
GROUP BY u.id
ORDER BY u.id;

應該很清楚——如果不刪除,貢獻總和,否則不。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM