即使没有行,左连接也返回null

时间:2010-09-14 13:18:55

标签: mysql sql left-join

我的桌子:

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或零作为结果。

我该怎么做?

2 个答案:

答案 0 :(得分:11)

您需要将左连接转为右连接或交换表格:

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

使用您的示例数据,这将为您提供包含空值的行。

答案 1 :(得分:6)

将您的LEFT JOIN更改为RIGHT JOIN ...应该从用户表中提取所有内容,如果可用,则从类别表中提取任何内容。