首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

mysql 求一条高效率SQl

2012-06-20 
mysql 求一条高效SQlMYsqlA表(主表)ID clm1 clm2 date1AA2012-01-012BB2012-01-013CC2012-01-024DD2012-01

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.com2from A表,B表where A.ID=B.A_IDgroup 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.com2from A表 A,(select B.ID,MAX(B.day),B.com1,B.com2 from B表 group by B.ID,B.com1,B.com2)BWHERE A.ID=B.A_ID
[解决办法]
SQL code
select A.ID,A.clm1,A.clm2,B.ID,B.day,B.com1,B.com2from 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 

热点排行