我试图在同一个表中获取值的计数,但使用不同的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)注:表包含数以百万计的值
发布于 2016-10-18 07:21:00
您可以使用条件聚合,以便在没有子查询的情况下在一个查询中获取数据:
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 发布于 2016-10-18 07:21:55
第一,因为它只执行一次,并且优化了方式。
https://stackoverflow.com/questions/40101905
复制相似问题