我想将此查询合并为一个,按日期返回 2 个值(“scount_atp”,其中 estado=1 和“scount_xxx”,其中 estado=4):
SELECT DATE_FORMAT(FROM_UNIXTIME(fecha),"%m-%d-%Y") as sdate, COUNT(id) as scount_atp FROM entradas WHERE estado = '1' AND fecha <= UNIX_TIMESTAMP(NOW()) AND fecha >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 YEAR)) GROUP BY sdate
SELECT DATE_FORMAT(FROM_UNIXTIME(fecha),"%m-%d-%Y") as sdate, COUNT(id) as scount_xxx FROM entradas WHERE estado = '4' AND fecha <= UNIX_TIMESTAMP(NOW()) AND fecha >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 YEAR)) GROUP BY sdate
我是 MySQL 的新手,如果这太基础了,我很抱歉......
谢谢大家的帮助!
最佳答案
SELECT
DATE_FORMAT(FROM_UNIXTIME(fecha),"%m-%d-%Y") as sdate,
SUM(IF(estado = '1',1,0)) as scount_atp,
SUM(IF(estado = '4',1,0)) as scount_xxx
FROM entradas
WHERE estado IN('1','4')
AND fecha <= UNIX_TIMESTAMP(NOW())
AND fecha >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 YEAR))
GROUP BY sdate
让我在这里添加一个不相关的东西:如果 estado
列是 INT
类型,您可能想写 1
而不是 '1'
- 或者您可能以全表扫描结束,将 int 列转换为字符串以进行比较。
关于mysql - 如何让这 2 个 SQL 查询返回 1 个结果集? (他们选择相同的项目,但 where 子句不同),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11208894/