中易网

sql 多表联查询

答案:4  悬赏:40  
解决时间 2021-02-06 09:38
假设a表
id b c
1 21 73
2 21 71
3 23 73

假设b表
id b c
1 65 66
2 65 66
3 65 66
要求:
1、查询a表 中b字段等于21的id
2、取出b表中id符合1条件的
怎么用一句sql表达出来?
最佳答案
可以用谓词或联结实现:

连接实现:
select * from b join a on b.id=a.id where a.b=21
联结实现的条件是两表id来自同一值域,表示意义相同。在连接时其实两可以作成一个表的:
也就是
id,a.b,a.c,b.b.b.c
但由于空值的问题,导致了部分依赖所以才会拆分成两个表的。

使用谓词实现:
select * from b where id in (select id from a where a.b=21)
这个可以实现两表id来自同一值域,但表示意义不同的情况。也就是说两表中的id有无关性。

相比较而言,连接的方式更快一些,但这种情况是两表来自同一值域,且意义相同,如果不是这种情况,可能得不到你正确的值的。而使用谓词不管意义是否相同,都可以得到正确的值。

玩数据库必须知道这两个表是否具有相关性,也就是设计时的意义,否则优化词句什么的都没有办法去做的!
全部回答
select * from b where id in (select id from a where a.b=21)
1、查询a表 中b字段等于21的id select a.id from a where a.b=21 2、取出b表中id符合1条件的 一句sql select * from b where b.id in(select a.id from a where a.b=21)
select distinct b.id from a,b where a.b=21 and b.id=1
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
天籁音民族管乐交流社地址在什么地方,我要处
wow为什么别人剥皮的速度比我的快
1994年电影街头霸王ken的扮演者叫什么?
波斯湾地区最丰富的矿产是A.铁矿 B.金刚石 C.
我画的战车可以秒掉生化危机里的暴君吗?
我朋友家的马犬放我家里了 我没有养过狗 只能
QQ飞车已经有了永久车 再得一辆相同的车以前
华中科技大学电气工程及其自动化专业和华南理
内向的女生是学学前教育好还是学园艺好,很纠
魔兽世界是用什么语言编写的?
我没看过终极三国,不知道三国的孙策与铁时空
为什么日语口语里很少以です、ます结尾
av功放为什么不能当hifi功放呢.
我4年前有犯罪记录在拘留所关了5天,到现在还
长时间头发梳的很紧对头皮有什么影响?会导致
推荐资讯
谁有,三国杀ol,帮我签个到,领个将魂
天真是傻吗?
有一首歌,我不知道歌名叫什么了,就记得有一
05年东风起亚悦达行驶36万公里值多少钱?
西双版纳地址有知道的么?有点事想过去
想买房子哪里买好?
请问爱动漫是什么?
“阳筱攸”好听不???或者帮忙取个带“筱”
梦幻诛仙手游转职武器魂怎么转换
小高制衣店怎么去啊,有知道地址的么
想买一个扫描仪,主要是扫描A3、A4图纸和一些
关于二级注册结构工程师的相关问题
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?