2012-09-15 181 views
0

我有一個表格cars(id, name)包含20行。其他表carLog(username, car, count)包含行數,玩家已經購買的汽車(如果沒有行,如果他們還沒買車)MySQL左加入?

我想我的查詢返回所有二十輛汽車,並且額外的加入信息,如果他們在carLog表中有一排,但我無法使其工作。

SELECT * FROM cars LEFT JOIN carLog ON cars.id=carLog.car 

這是返回數百行,我希望它返回20行(每車),與該行中額外的信息,如果該用戶名已經購買了汽車:

WHERE carLog.username='Juddling' 

我不知道我是否打算使用GROUP BY,WHERE或其他類型的連接!

+0

在MS SQL中你可以在MySQL中排名前20位我認爲這是有限制的嗎? – Grixxly

回答

3

WHERE條款移動用戶名條件的ON條款。

SELECT * 
FROM cars 
LEFT JOIN carLog 
    ON cars.id=carLog.car 
    AND carLog.username='Juddling' 

當JOIN已完成時應用WHERE子句。這意味着它將放棄LEFT JOIN添加的NULL行。

1

當你正在限制從外部表連接,你必須把狀態在on,而不是where

select * from cars 
left join carLog on cars.id = carLog.car and carlog.username = 'Juddling'