2010-09-14 43 views
4

我的表:左連接返回NULL,即使沒有行

catid, name

userid, uname, catid

的樣本數據:
貓表

 
1 | Cate one 
2 | cate two 

用戶表

 
1 | sam | 1 
2 | dam | 0 

我的查詢是

SELECT cat.id, cat.name 
FROM cat LEFT JOIN user 
    ON cat.id = user.catid 
WHERE user.id = 2 

由於與id 0我得到零行無類。
如果沒有行,我想NULL或零作爲結果。

我該怎麼做?

+1

Duplicate http://stackoverflow.com/questions/3656483/mysql-join-and-get-all-relations-even-if-0 – 2010-09-14 13:23:46

+0

因爲我沒有太多入mysql我不能猜測.. .. – 2010-09-14 13:41:19

+0

這是一個愚蠢的問題。不是嗎?無論如何...因爲我很窮,我不得不問這樣的問題。除了相關的問題太大而無法反覆試驗。所以我問了一個新的。 – 2010-09-14 13:43:09

回答

7

要麼你需要把你的左連接到右連接或周圍交換表:

SELECT cat.id, cat.name 
    FROM user LEFT JOIN cat ON cat.id = user.catid 
WHERE user.id = 2 

有了您的數據。例如,這會給你包含空值,結果一排。

+0

這是一個愚蠢的問題。不是嗎?無論如何...因爲我很窮,我不得不問這樣的問題。除了相關的問題太大而無法反覆試驗。所以我問了一個新的。 – 2010-09-14 13:42:41

5

LEFT JOIN更改爲RIGHT JOIN ...應從用戶表中提取所有內容,如果可用,則從類別表中提取所有內容。

+1

+1 - 這就是爲什麼SQL同時具有「LEFT」和「RIGHT」風格的原因,因此可以切換方向而不必「交換表格」。 – onedaywhen 2010-09-14 14:11:14