mysql 求一条高效率SQl

mysql 求一条高效SQl

MYsql

A表(主表)

ID clm1 clm2 date

1 A A 2012-01-01

2 B B 2012-01-01

3 C C 2012-01-02

4 D D 2012-01-03

B

ID A_ID day com1 com2

1 1 20120101 c1 c2

2 1 20120102 d1 d2

3 1 20120105 e1 e2

4 2 20120108 f1 f2

5 2 20120107 g1 g2

6 3 20120101 h1 h2

7 3 20120102 i1 i2

A表 ID是主键 date是索引

B表 ID是主键

A的ID和B表的A_ID是关联键

我想得到的结果

A.ID A.clm1 A.clm2 B.ID B.day B.com1 B.com2

1 A A 3 20120105 e1 e2

2 B B 4 20120108 f1 f2

3 C C 7 20120102 i1 i2

4 D D NULL NULL NUll NULL

就是取A表和B表中day最大的数据和A表联起来。

请高手写一个效率最高的SQL。因为我的数据库用两个表有百万的数据。谢谢。。。



select * from a left join 

(select * from b b1 where not exists(select 1 from b where b1.A_ID=A_ID and b1.day<day)) b2

on a.id=b2.A_ID



SQL code

SELECT A.ID,A.clm1, A.clm2,B.ID,max(B.day),B.com1,B.com2
from A表,B表
where A.ID=B.A_ID
group by A.ID,A.clm1,A.clm2,B.ID,B.com1,B.com2
或
 SELECT A.ID,A.clm1, A.clm2,B.ID,B.day,B.com1,B.com2
from A表 A,
(select B.ID,MAX(B.day),B.com1,B.com2 from B表 group by B.ID,B.com1,B.com2)B
WHERE A.ID=B.A_ID


SQL code
select A.ID,A.clm1,A.clm2,B.ID,B.day,B.com1,B.com2
from A left join (select * from B t where not exists (select 1 from B where A_ID=t.A_ID and ID>t.ID)) x on A.id=x.A_ID


                        
    
    
                    
mysql 求一条高效率SQl

相关文章:

你感兴趣的文章:

标签云: