这种select查询是什么意思呢

kankan231 2015-08-03 03:24:50
在字段上使用select子查询,比如有a,b两张表
select a.*,(select b.picture from pictures b where b.product_id = a.product_id) picture from a where a.id=xxx;
网上也找不到这方面的资料,求教,给个资料链接也行
...全文
183 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
道玄希言 2015-08-04
  • 打赏
  • 举报
回复
你可以通过 EXPLAIN 查看两种查询的执行优劣。 在数据量不多的情况下,两种都沒啥问题了。
kankan231 2015-08-03
  • 打赏
  • 举报
回复
引用 1楼道玄希言 的回复:
这个语句相当于:

select a.*, b.pictures
from a
inner join pictures as b
on b.product_id = a.product_id
where a.id=xxx;
将一个子查询的结果,作为一个字段, 要求子查询语句只能包含一个字段,且查询的结果唯一。 select b.picture from pictures b where b.product_id = a.product_id 这句,就是从 pictures 表里面,查询出 pictures表中ID等于A表中product_id的图片的名称。
请问这样的写法和连接的写法有何不同呢,哪种效率更高
datarrow 2015-08-03
  • 打赏
  • 举报
回复
嵌套查询 楼主这个查询是 将查询结果作为字段值,即2次查询 通过一个查询完成了,快捷方便。 另外,还可以嵌套在另外一个查询块的where子句中: 代码仅供参考: SElECT 书名, 价格 FROM Books WHERE 价格 > ( SELECT AVG(价格) FROM Books )
道玄希言 2015-08-03
  • 打赏
  • 举报
回复
用左连接。。。 在pictures 表中不存在时,A表的记录仍然能显示


select a.*, b.pictures
from a
left join pictures as b
on b.product_id = a.product_id
where a.id=xxx;

道玄希言 2015-08-03
  • 打赏
  • 举报
回复
这个语句相当于:

select a.*, b.pictures
from a
inner join pictures as b
on b.product_id = a.product_id
where a.id=xxx;
将一个子查询的结果,作为一个字段, 要求子查询语句只能包含一个字段,且查询的结果唯一。 select b.picture from pictures b where b.product_id = a.product_id 这句,就是从 pictures 表里面,查询出 pictures表中ID等于A表中product_id的图片的名称。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧