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

发布于 2024-09-19 09:24:57 字数 501 浏览 7 评论 0原文

我的表:

catid, name

userid, uname, catid

示例数据:
cat 表

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

我该怎么做?

My tables:

Table cat has id, name

Table user has id, uname, catid

Sample data:
cat table

1 | Cate one
2 | cate two

user table

1 | sam | 1
2 | dam | 0

my query is

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

Since there is no category with id 0 I get zero rows.
If there are no rows I want NULL or zeros as a result.

How do I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只有一腔孤勇 2024-09-26 09:24:57

您需要将左联接转换为右联接,或者交换表:

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

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

You either need to turn your left join into a right join or swap the tables around:

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

With your example data, this will give you a row containing nulls as a result.

写下不归期 2024-09-26 09:24:57

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

Change your LEFT JOIN to a RIGHT JOIN... that should pull everything from the users table, and anything from the category table if it is available.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文