gpt4 book ai didi

mysql - mysql 的 collesce 问题

转载 作者:行者123 更新时间:2023-11-29 12:50:39 26 4
gpt4 key购买 nike

我有一个非常平坦的表 - tbl_values,其中给定行中有用户 ID 和净金额。在下面的示例中,2280 根据时间戳在过去 30 天内没有记录。

我希望返回 3 行,其中 2280 为“0” - 但我只返回 2 行?我在这里遗漏了一些明显的东西吗?

SELECT userid, (COALESCE(SUM(netAmount),0)) as Sum FROM `tbl_values` where userid in (2280, 399, 2282) and date > (select DATE_SUB(NOW(), INTERVAL 30 day)) GROUP BY userid 

最佳答案

假设您始终想要返回用户,无论他们在 tbl_values 中有匹配的记录,您要寻找的是外部联接:

SELECT u.userid, COALESCE(SUM(v.netAmount),0) as Sum 
FROM (
SELECT 2280 userid UNION ALL
SELECT 399 UNION ALL
SELECT 2282
) u
LEFT JOIN `tbl_values` v ON u.userid = v.userid AND
v.date > DATE_SUB(NOW(), INTERVAL 30 day)
GROUP BY u.userid
<小时/>

如果您可能有一个Users 表,那么您可以使用它来代替子查询。

SELECT u.userid, COALESCE(SUM(v.netAmount),0) as Sum 
FROM users u
LEFT JOIN `tbl_values` v ON u.userid = v.userid AND
v.date > DATE_SUB(NOW(), INTERVAL 30 day)
WHERE u.userid in (2280, 399, 2282)
GROUP BY u.userid

关于mysql - mysql 的 collesce 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com