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

Jay*_*ran 7 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
Run Code Online (Sandbox Code Playgroud)

由于没有id0的类别,我得到零行.
如果没有我想要的行NULL或结果为零.

我怎么做?

Phi*_*oss 11

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

SELECT cat.id, cat.name
  FROM user LEFT JOIN cat ON cat.id = user.catid
 WHERE user.id = 2
Run Code Online (Sandbox Code Playgroud)

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


Lit*_*les 6

将您更改LEFT JOINRIGHT JOIN...应该从用户表中提取所有内容,并从类别表中提取任何内容(如果可用).

  • +1 - 这就是为什么SQL同时具有"LEFT"和"RIGHT"风格,即可以切换方向而无需"交换表格". (2认同)