如何在JOIN中重写子查询?

时间:2010-11-23 15:18:03

标签: sql postgresql join subquery

我的SQL不是很流利,我的问题是如何重写以下语句以使其看起来更自然。我正在尝试编写的select加入两个表 - “用户”和“统计数据” - 我事先知道用户的身份。它可能是非常基本的东西,但我还不是SQL忍者。

select
    u.id,
    sum(s.xxx)
from
    (
        select id from users where id in (100, 200, 300)
    ) u
    left join
    stats s
        on u.id = s.user_id
group by
    u.id
;

看起来很奇怪的部分是

    (
        select id from users where id in (100, 200, 300)
    ) u

建议我正确的方法。感谢

1 个答案:

答案 0 :(得分:3)

这是一种复杂的说法

... WHERE id in (100,200,300)

WHERE条款中。

整个事情可以改写为:

select
    u.id,
    sum(s.xxx)
from
    users u
left join stats s
    on s.user_id = u.id
where u.id in (100, 200, 300)
group by
    u.id