簡體   English   中英

MySQL選擇從同一表中計數不同數據的最佳方法

[英]MySQL select count different data from same tables Best approach

我試圖獲取相同表中但不同的where子句中的值計數。 哪一種是最好的方法

SELECT * FROM 
  (SELECT COUNT(id) FROM table WHERE post_id = 123 AND action_type IN(1,3,7,9,10)) as 'a',
  (SELECT COUNT(id) FROM table WHERE post_id = 123 AND action_type IN(2,7,8,18)) as 'b'

要么

SELECT COUNT(id) FROM table WHERE post_id = 123 AND action_type IN(1,3,7,9,10)
SELECT COUNT(id) FROM table WHERE post_id = 123 AND action_type IN(2,7,8,18)

注意:表包含數百萬個值

您可以使用條件聚合,以便在一個查詢中獲得數據而無需子查詢:

SELECT COUNT(CASE WHEN action_type IN(1,3,7,9,10) THEN id END) AS count_1,
       COUNT(CASE WHEN action_type IN(2,7,8,18) THEN id END) AS count_2
FROM table 
WHERE id = 123 

第一個,因為它將只執行一次並且優化了方式

暫無
暫無

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

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