SQL 数据库多表联查,不是很懂,帮帮忙

2018 年 5 月 14 日
 luhuan97
A 表
id B_id1 B_id2 ...其他字段
1 1 2

B 表
id name
1 小明
2 大明

如何用 SQL 语句查询 A 表中的所有字段,还有 A 表记录对应 B 表的 name。
数据可没学好,现在急用,各位帮帮忙
2906 次点击
所在节点    数据库
26 条回复
Eugene1024
2018 年 5 月 14 日
建议 LZ 百度下连接查询,自己再操作两边,应该就可以搞定了
wellsc
2018 年 5 月 14 日
工作中其实很少用到 join
alcarl
2018 年 5 月 15 日
搞统计得经常用呀,做联机的用的少一些
darrenxyli
2018 年 5 月 15 日
"工作中其实很少用到 join"...
CFO
2018 年 5 月 15 日
@wellsc 请教下用的多的是什么?
hubahuba
2018 年 5 月 15 日
@CFO 其实还是用的挺多的,因为这涉及到表设计。那还是分人的,如果懒一些就直接,多建一些表就行了。但是你对自己要求高一些,那设计表的时候就要设计好,如何关联查询了。最终目的无非就是渠道数据而已,不必纠结。但是如果你去面试的时候,直接说,我就是一堆表直接查。那就比较尴尬了。
hubahuba
2018 年 5 月 15 日
其实还是用的挺多的,因为这涉及到表设计。那还是分人的,如果懒一些就直接,多建一些表就行了。但是你对自己要求高一些,那设计表的时候就要设计好,如何关联查询了。最终目的无非就是渠道数据而已,不必纠结。但是如果你去面试的时候,直接说,我就是一堆表直接查。那就比较尴尬了。
FrailLove
2018 年 5 月 15 日
SELECT b.name,a.* FROM a LEFT JOIN b ON a.id=b.id
woscaizi
2018 年 5 月 15 日
a 表中 b_id 是横向扩展的吗?
msg7086
2018 年 5 月 15 日
@CFO 分开成两次查询效率可能会更高。
ldw4033
2018 年 5 月 15 日
select a.*
,(select b.name from B b where b. id=a.B_id1) name1
,(select b.name from B b where b. id=a.B_id2) name2
from A a

楼主这里连接的是 2 个 B 表 ID 啊
panpanpan
2018 年 5 月 15 日
@ldw4033 为什么不用关联查询,效率更高啊。
select a.*,b1.name,b2.name from A a
left join B b1 on a.B-id1 = b1.id
left join B b2 on a.B-id2 = b2.id
carakan
2018 年 5 月 15 日
"工作中其实很少用到 join"...

因为 join 数据量大了效率不行?

还是说...后期维护复杂?
popil1987
2018 年 5 月 15 日
vjnjc
2018 年 5 月 15 日
楼主是怕效率问题还是一点都不会,如果不会的话用 12 楼的方法就可以啦
yufpga
2018 年 5 月 15 日
@carakan 数据量上来了,涉及到分库分表,使用 join 查询就会很麻烦,扩展性不好。
oppoic
2018 年 5 月 15 日
@CFO “单表开发,运维扩容” 这个是主流的,单表的效率很高。
大型项目,运维比开发做的工作多多了。
carakan
2018 年 5 月 15 日
我一般都是这样

left join B b1 on a.B-id1 = b1.id



left join B b1 on a.B-id1 = b1.id
left join B b2 on a.B-id2 = b2.id

这样写的好处是???
Alexhohom
2018 年 5 月 15 日
两个 left join
select a.*,b.name,c.name
from a
left join B b on b.id = a.B_id1
left join B c on c.id = a.B_id2
banks0913
2018 年 5 月 15 日
@yufpga 那一般扩展性好的方案是啥样?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/454849

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX