clwn.net
当前位置:首页 >> sql多表嵌套查询 >>

sql多表嵌套查询

可以啊,这就是子查询的发挥地方

select * from phome_ecms_memberpro where userid in( select userid from phome_ecms where checked >1 and id in ( select userid from phome_ecms_memberpro group by userid having count(userid)>4)) order by id asc --存储过程 效率更高些 这个写的不好.一般都不in查询 因为他的效率特别低.而且不需要全部字段的话,尽量就不用select * 来查询.慢慢努力哦!

好几种写法,我这里就写一个算抛砖引玉吧,也算给你一个提示.select name from a where id in (select c.aid from c where bin in (select id from b where job in ('q','r')))也可以直接关联到c表然后相等,这个办法应该不错,可以直接对应.

SELECT t1.FName, t1.FNumber, t3.FName, t3.FNumberFROM t_ICItemCore t1, t_MeasureUnit t3WHERE t1.FCode = xxxx AND t3.FMeasureUnitID = (SELECT FUnitID FROM t_ICItemBase WHERE FItemID = t1.FItemID)

这两个没有太大的关系,如果能够用多表连查解决的问题,一般都采用join连查的方式,这样速度最快; select t1.name,t2.name from T_table1 t1 left join T_table2 t2 on t1.id = t2.tid;嵌套查询一般用于解决复杂问题,比如t1记录书籍的名称、作

select * from 项目表

要用连表查询SELECT * FROM song_info so LEFT JOIN singer_info si ON so.singer_id = si.singer_id;你要其他字段的化就把 * 改成你要的字段;

你这个并非是什么嵌套查询啊,只是表不止一个,有个外连接而已.你可以把所有的inner join看成是where条件.影响速度的地方应该有2个,一个是你用inner join结合出来的数据量太大,可能抽出的重复数据太多,所以你才使用了distinct,应该想办法去掉不需要的冗余数据.另一个就是你用了right join,整个sql看起来貌似以b为主表,但是其实a才是主表,折腾了一堆,都是为a做铺垫.根据各个表的数据量,把整个sql重构一下就可以了.

这个不好说.ms-sql server吗?按ctrl+l查看t-sql的执行计划.分析看哪个效率高.子查询嵌套也要引用到实表生成派生表 和直接引用 设计到列值以及聚集索引扫描等问题,还是要看具体t-sql分析吧.

可以,当然这个得看表之间的关系和联系了.当然最好的办法直接用交差查询.select a.a,b.b form a,b where a.id=b.id

zhnq.net | ltww.net | | jjdp.net | xcxd.net | 网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com