简体   繁体   English

MySQL选择从同一表中计数不同数据的最佳方法

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

i am trying to get count of values in same table but different where clause. 我试图获取相同表中但不同的where子句中的值计数。 Which one is best approach for that 哪一种是最好的方法

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'

OR 要么

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)

Note: Table contains millions of values 注意:表包含数百万个值

You can use conditional aggregation so as to get data in one query without subqueries: 您可以使用条件聚合,以便在一个查询中获得数据而无需子查询:

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