MySQL使用带有2个查询,子查询或连接的select?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL使用带有2个查询,子查询或连接的select?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1502字,纯文字阅读大概需要3分钟。
内容图文
![MySQL使用带有2个查询,子查询或连接的select?](/upload/InfoBanner/zyjiaocheng/894/8dbfb3a743ec483ba85a5871271aac00.jpg)
与我的上一个问题(MySQLi performance, multiple (separate) queries vs subqueries)相关,我遇到了另一个问题.
有时我使用子查询从另一个表中选择值(例如,连接到ID的用户名),但我不确定select-in-select,因为它看起来不是很干净我不确定性能.
子查询可能如下所示:
SELECT
(SELECT `user_name` FROM `users`
WHERE `user_id` = table2.user_id) AS `user_name`
, `value1`
, `value2`
FROM
`table2`
....
对table1的结果使用单独的查询而对table2使用另一个查询是否“更好”(连接加倍,但不需要交叉表),或者我是否应该使用JOIN在单个查询中获取结果?
我对JOINS和子查询没有多少经验,所以我不确定在这种情况下JOIN是否会“太多”,因为我真的只需要一个名称连接到一个ID(或者可能需要计算一个ID)来自表的行),或者如果没关系,因为select-in-select也被视为某种JOIN …
JOIN的解决方案可能如下所示:
SELECT
users.user_name , table2.value1, table2.value2
FROM
`table2`
INNER JOIN
`users`
ON
users.user_id = table2.user_id
....
如果我更喜欢JOIN,在这种情况下哪一个最好:左连接,内连接或其他什么?
解决方法:
您询问是否使用内连接或左连接这一事实确实表明您没有对它们做过多少工作.
这两者的目的完全不同,内部联接用于从两个或多个表中返回列,其中某些列具有匹配值.如果希望连接子句中左侧指定的表中的行返回,即使其他表中没有匹配的列,也会使用左连接.这取决于您的应用程序.如果一个表有玩家的名字,而另一个表包含他们支付的罚款的详细信息,那么你肯定会想要使用左联,来为没有罚款的玩家负责,因此在第二个表中没有记录.
关于是否使用子查询或连接,正确使用时连接可以更快.正确地说,当连接列上有索引时,表按照包含行数的递增顺序指定(通常可能有例外),连接列具有相似的数据类型等.如果所有这些条件匹配,加入将是更好的选择.
内容总结
以上是互联网集市为您收集整理的MySQL使用带有2个查询,子查询或连接的select?全部内容,希望文章能够帮你解决MySQL使用带有2个查询,子查询或连接的select?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。