2010-09-14 46 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