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