MySQL return 'empty result' 即使合并
MySQL return 'empty result' even with coalesce
我在使用 MySQL 时遇到了一些问题。
这是我使用的查询:
SELECT
COALESCE(SUM(`a`.`battles`), 0) AS `battles`
FROM
`account_stats` AS `a`
WHERE
`a`.`account_id` = 12345
GROUP BY
`a`.`account_id`
Table account_stats
不为空,但与 account_id = 12345
没有行。
我想要 MySQL returns 0 场战斗 而不是 Empty set
。但即使使用 COALSECE 或 IFNULL 它 returns Empty set
.
当我删除 GROUP BY
时一切正常,但我需要它来计算战斗总和。
有没有办法解决这个问题?
如果您只需要一个帐户的信息,如果您希望查询到 return 行,值为 0
:
,则可以使用条件聚合
SELECT SUM(CASE WHEN a.account_id = 12345 THEN a.battles ELSE 0 END) as battles
FROM account_stats a;
如果table不为空,则不需要coalesce()
。
如果您在 account_id
上有一个索引并且 table 很大,则以下可能会更有效,因为子查询将使用该索引,而查询的其余部分将操作一个单行:
SELECT x.account_id, COALESCE(SUM(a.battles), 0) as battles
FROM (SELECT 12345 as account_id
) x LEFT JOIN
(SELECT a.account_id, SUM(a.battles) as battles
FROM account_stats a
WHERE a.account_id = 12345
) a
ON x.account_id = a.account_id;
我在使用 MySQL 时遇到了一些问题。
这是我使用的查询:
SELECT
COALESCE(SUM(`a`.`battles`), 0) AS `battles`
FROM
`account_stats` AS `a`
WHERE
`a`.`account_id` = 12345
GROUP BY
`a`.`account_id`
Table account_stats
不为空,但与 account_id = 12345
没有行。
我想要 MySQL returns 0 场战斗 而不是 Empty set
。但即使使用 COALSECE 或 IFNULL 它 returns Empty set
.
当我删除 GROUP BY
时一切正常,但我需要它来计算战斗总和。
有没有办法解决这个问题?
如果您只需要一个帐户的信息,如果您希望查询到 return 行,值为 0
:
SELECT SUM(CASE WHEN a.account_id = 12345 THEN a.battles ELSE 0 END) as battles
FROM account_stats a;
如果table不为空,则不需要coalesce()
。
如果您在 account_id
上有一个索引并且 table 很大,则以下可能会更有效,因为子查询将使用该索引,而查询的其余部分将操作一个单行:
SELECT x.account_id, COALESCE(SUM(a.battles), 0) as battles
FROM (SELECT 12345 as account_id
) x LEFT JOIN
(SELECT a.account_id, SUM(a.battles) as battles
FROM account_stats a
WHERE a.account_id = 12345
) a
ON x.account_id = a.account_id;