mysql - 如何让这 2 个 SQL 查询返回 1 个结果集? (他们选择相同的项目,但 where 子句不同)

标签 mysql sql

我想将此查询合并为一个,按日期返回 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/

相关文章:

php - MYSQL 重复条目上的 AJAX 响应

mysql - 嵌套的 MySQL 查询

sql - 如何选择 'user_id' 列所在的所有表名?

php - 将多个产品添加到一个购物车中

php - 检索导入的 CSV 的 ID(LOAD DATA INFILE)

sql - 如何更改 MySQL 字段内的 URL?

java - 监听MySQL数据库的变化并自动更新前端,无需显式刷新前端

php - zend 中每行 2 列的总和

sql数据库表创建

c# - 从 nvarchar 值到数据类型 int 的转换失败?