【发布时间】:2020-01-24 05:25:38
【问题描述】:
不知道为什么会这样,但我有这个问题:
SELECT vote.user_id, ARRAY_AGG(COALESCE(vote.value, 0)) FROM item
LEFT JOIN vote ON item.item_id = vote.item_id
GROUP BY vote.user_id
ORDER BY user_id;
并且item表有100个元素。
我正在寻找按 user_id 分组的结果行,并且每个数组的长度为 100 个项目。也就是说,如果投票表中不存在该值,则只需将其替换为0。
不幸的是,这没有发生。数组的长度不同,并且只包含现有的投票值。
我认为LEFT JOIN 会导致NULLs 代替缺失的投票值,并让COALESCE 将它们归零,但显然这不会发生。
【问题讨论】:
标签: sql postgresql join left-join