MySQL (InnoDB) 从 2 个表中选择并始终得到空结果集
我有点困惑。我使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
LEFT OUTER JOIN
无条件地从用户
获取结果,例如:这里是各种连接类型的很好的直观解释。
Use a
LEFT OUTER JOIN
to unconditionally get results fromusers
, e.g.:Here is a good visual explanation of the various join types.
这是一个
INNER JOIN
。但您正在指定一个连接字段。我认为您需要一个OUTER JOIN
。甚至可能是FULL OUTER JOIN
您的示例可以重写为:
如果
id_user
上没有匹配的行,如果其中一个表为空,则肯定会出现这种情况,那么你会在结果集中得到 0 条记录。尝试:
That's an
INNER JOIN
. But you are specifying a join field. I think you want anOUTER JOIN
. Maybe even aFULL OUTER JOIN
Your example can be re-written as:
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: