我有一個表,其中包含以下列; ID,post_id,狀態和日期時間。每次更新帖子(post_id)時,都會插入一行,並顯示最新狀態和日期時間時間戳。我創建了一個按狀態分類的餅圖。因此,我必須先選擇帖子的最新條目(忽略所有過去的更新),然後COUNT返回多少行並按狀態分組。我的查詢是什麼樣的?MySql選擇最新的行,然後組,然後計數
-2
A
回答
1
SELECT status, COUNT(*) AS statusCnt
FROM inspections
WHERE id IN (SELECT MAX(id) FROM inspections GROUP BY post_id)
GROUP BY status
未經檢驗的替代:
SELECT i1.status, COUNT(i1.*) AS statusCnt
FROM inspections i1
JOIN (
SELECT MAX(i2.id) AS maxID FROM inspections i2 GROUP BY i2.post_id
) AS innerTbl ON i1.id = innerTbl.id
GROUP BY i1.status
0
SELECT count(*) FROM (SELECT *,MAX(time) FROM table GROUP BY post_id) As b
按我你的問題的解釋,查詢應該是這樣的
+0
'SELECT *,MAX(time)'這不會做我認爲你會認爲它會做的事。 「*」中包含的值不一定與最近一次的行對應。 –
+1
我認爲你的結果與'SELECT COUNT(DISTINCT post_id)FROM table'是一個單一的標量值。 – AgRizzo
相關問題
- 1. MySQL - 選擇然後更新
- 2. MySQL:選擇最後X行,然後選擇特定行
- 3. MySQL的計數,然後由該組數
- 4. 更新聲明,然後選擇MySQL
- 5. Mysql選擇值,然後更新
- 6. MySql的選擇CASE WHEN然後選擇
- 7. PDO選擇然後更新
- 8. 選擇Count行然後更新值
- 9. 計數,然後選擇PHPUnit中
- 10. mysql選擇行,然後複製行並更新值
- 11. 選擇,然後更新計數數量的mysqli
- 12. Mysql的選擇睡眠,然後返回
- 13. 計算行總數與選擇全部然後計算大小
- 14. 計數錶行然後addClass
- 15. 然後計算行數
- 16. 將MySQL逗號數據插入數組,然後選擇
- 17. SQL - 從最新選擇*除非= null然後最新非null
- 18. 使用連接選擇行然後更新mysql表
- 19. Java mysql AWS執行成功,然後選擇不返回新值
- 20. 執行Math.pow然後更新數組-java
- 21. Mysql首先選擇然後限制
- 22. MySql查詢選擇然後刪除
- 23. MySQL選擇,然後輸出OUTPUT
- 24. MySql如果然後在選擇語句
- 25. mysql如果然後選擇語句
- 26. 選擇最後一行。然後也許反覆向前
- 27. MySQL的SELECT然後更新
- 28. 創建一個動態數組,然後選擇最高值
- 29. 更新行,然後選擇更新的行
- 30. 選擇多行,然後加入每行
您告訴我們。你的查詢目前是什麼樣的?表明你已經付出了一些努力。 –
我目前的查詢如下所示:SELECT狀態,COUNT(*)AS statusCnt FROM檢查GROUP BY狀態。它返回所有事物的計數並且不會過濾出過去的事件。 – vanreus