
select * from table1 as t1 join table2 as t2 on(t1.a= t2.b) where t1.c = x order by t1.d desc
等价于
select * from table 1 as t1 ,table2 as t2 where t1.a = t2.b and t1.c = x order by t1.d desc
2个SQL语句对于数据库来说是一样的,执行计划都没有区别...
你可以试一下.
join 经常用来做关联查询,可以把两张或者多张表用通过关联条件关联起来做数据查询在使用join查询的时候要区分主表和附表,jion ...on .....and
on: 表之间的关联条件
and:对附表做筛选
内连接,两个关联的表都为主表,所以他们的做条件筛选的顺序是:先连接,后筛选。此时 join ...on ... and =join...on... where ....
左连接,这时候左边的表就是主表,所以,主表的数据会全部展示出来,右边的表为附表,此时on连接后在通过and进行筛选的条件对主表不起作用,只对附表起作用。先筛选再连接
右连接,右边的表为主表,左边表变成附表,如果on后面又and 做筛选条件的话,和left join一样 也是先筛选后连接。
效率不高,大数据量的话最好写个过程处理。UPDATE T_PARTY_GRADE T1
SET T1.GRADE_TYPE= (select GRADE_TYPE from T_GRADE T2 WHERE T1.PARTY_ID=T2.PARTY_ID) ,
GRADE_LEVEL = (select GRADE_LEVEL from T_GRADE T2 WHERE T1.PARTY_ID=T2.PARTY_ID)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)