作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常平坦的表 - 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/
我有一个非常平坦的表 - tbl_values,其中给定行中有用户 ID 和净金额。在下面的示例中,2280 根据时间戳在过去 30 天内没有记录。 我希望返回 3 行,其中 2280 为“0” -
我是一名优秀的程序员,十分优秀!