MySQL (InnoDB) 从 2 个表中选择并始终得到空结果集

发布于 2024-09-13 14:19:14 字数 222 浏览 4 评论 0原文

我有点困惑。我使用 MySQL 5+ 和 InnoDB 作为我的引擎。如果我运行以下语句并且表“user_temp”为空,则无论“users”表中有什么,我总是会得到一个空结果集。

SELECT * FROM `users`, `user_temp` 

如果我在“user_temp”中放入一些内容,我将返回所有结果。这应该像这样工作吗?

谢谢。

I'm a little confused. I'm using MySQL 5+ with InnoDB as my engine. If I run the following statement and the table 'user_temp' is empty I always get an empty result set no matter what's in the 'users' table.

SELECT * FROM `users`, `user_temp` 

If I put something in 'user_temp' I'll get back all the results. Is this suppose to work like this?

Thanks.

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

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

发布评论

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

评论(2

红玫瑰 2024-09-20 14:19:15

使用LEFT OUTER JOIN无条件地从用户获取结果,例如:

SELECT 
    u.*, ut.*
FROM 
    `users` u
    LEFT OUTER JOIN `user_temp` ut
    ON ut.user_id = u.user_id

这里是各种连接类型的很好的直观解释。

Use a LEFT OUTER JOIN to unconditionally get results from users, e.g.:

SELECT 
    u.*, ut.*
FROM 
    `users` u
    LEFT OUTER JOIN `user_temp` ut
    ON ut.user_id = u.user_id

Here is a good visual explanation of the various join types.

酷遇一生 2024-09-20 14:19:15

这是一个INNER JOIN。但您正在指定一个连接字段。我认为您需要一个OUTER JOIN。甚至可能是 FULL OUTER JOIN

您的示例可以重写为:

SELECT * FROM users, user_temp
INNER JOIN user_temp
ON users.id_user = user_temp.id_temp

如果 id_user 上没有匹配的行,如果其中一个表为空,则肯定会出现这种情况,那么你会在结果集中得到 0 条记录。

尝试:

SELECT * FROM users, user_temp
LEFT JOIN user_temp
ON users.id_user = user_temp.id_temp

That's an INNER JOIN. But you are specifying a join field. I think you want an OUTER JOIN. Maybe even a FULL OUTER JOIN

Your example can be re-written as:

SELECT * FROM users, user_temp
INNER JOIN user_temp
ON users.id_user = user_temp.id_temp

If no rows match on id_user, which would definitely be the case if one of the tables was empty, then you would get 0 records in your result set.

Try:

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