2010-11-23 67 views
0

我不是很流利的SQL,我的問題是如何重寫下面的語句,使其看起來更自然。 select我試圖寫入兩個表 - 「用戶」和「統計」 - 我知道用戶的ID提前。這可能是非常基本的東西,但我不是一個SQL忍者呢。如何重寫JOIN中的子查詢?

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 

建議我的正確途徑。由於

+0

您不使用從該查詢統計(S),你爲什麼會包括它的任何字段:

整個事情可以作爲被改寫? – Leslie 2010-11-23 15:21:59

+0

你是對的。我誤打錯了:這是'sum(s.xxx)` – 2010-11-23 15:33:54

回答

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