mysql - 获得结果的更好方法

标签 mysql sql

想知道是否有更好的方法来运行这个查询,因为 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 :

http://sqlfiddle.com/#!9/e147c/3

关于mysql - 获得结果的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43398317/

相关文章:

mysql - 如果一个表中的主 ID 位于另一表中,如何更新该表中的列

sql - 将变量值设置为字符串数组

java - MySQL语法错误

c# - 字符串 .split c# 引发 IndexOutOfRangeException

sql - 对于一个成功后可能会变大的小型 Web 项目,什么是好的免费 RDBMS 解决方案?

mysql - 改进mysql查询

不同数据库上的 SQL 删除索引

php - 左连接只返回一行

无法识别 SQL 加载程序日期格式

sql - Postgres - 左连接,同一张表