想知道是否有更好的方法来运行这个查询,因为 BETWEEN 会自己重复它,我只需要添加一个新规则 (and local=1)
OUTPUT 就是我想要的,只是想知道如果有更短或更好的版本。
架构和结果:http://sqlfiddle.com/#!9/e147c/2
SELECT COUNT(*) as total,
(SELECT COUNT(*) FROM orden WHERE actual_date BETWEEN '2017-01-01' AND '2017-01-05' and local=1 and forma_pago='tarjeta' and status=4) as Principal
FROM orden
WHERE actual_date BETWEEN '2017-01-01' AND '2017-01-05'
and forma_pago='tarjeta'
and status=4
最佳答案
应该这样做:
SELECT COUNT(*) AS total
, SUM(CASE
WHEN local = 1 THEN 1
ELSE 0
END) AS Principal
FROM orden
WHERE actual_date BETWEEN '2017-01-01' AND '2017-01-05'
AND forma_pago = 'tarjeta'
AND status = 4;
sql fiddle :
关于mysql - 获得结果的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43398317/