我试图在一个查询中获取一列的总和以及两个日期之间同一列的总和。这可能吗?
我的表格是这样的:
uid|amount|date
我想做的两个查询之一:
SELECT sum(amount) as `keys` FROM tbl_keys WHERE uid = 1
SELECT sum(amount) as `keys` FROM tbl_keys WHERE uid = 1 AND YEAR(`date`) = YEAR(CURRENT_DATE)
AND MONTH(`date`) = MONTH(CURRENT_DATE)
最佳答案
您可以使用 UNION 查询:
SELECT 'All' AS cnt, sum(amount) as `keys` FROM tbl_keys WHERE uid = 1
UNION ALL
SELECT 'Current_month' AS cnt, sum(amount) as `keys`
FROM tbl_keys
WHERE
uid = 1
AND `date`<= last_day(current_date)
`date`>= current_date - interval (day(current_date)-1) day
(我更喜欢在日期列上使用 >=
和 <=
,因为它可以使用索引(如果存在),而像 MONTH()
或 YEAR()
这样的函数则不能,而且我假设 date
是一个日期列,它不包含时间信息)。
如果您希望结果在一行中,您可以使用内联查询:
SELECT
(SELECT sum(amount) as `keys` FROM tbl_keys WHERE uid = 1) AS total,
(SELECT sum(amount) as `keys`
FROM tbl_keys
WHERE
uid = 1
AND `date`<= last_day(current_date)
`date`>= current_date - interval (day(current_date)-1) day
) AS current_month
关于MYSQL在1个查询中获取2个日期之间的总和和总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34063336/