简单描述:
现在有两个表,TB1和TB2,
TB1有COLUMN C11, C12,
TB2有COLUMN C21, C22;现在需要 在 TB2.C21 = TB1.C11,同时把最接近TB1.C12的TB2.C22 ,也就是在 TB1.C12 >= TB2.C22取最大的TB2.C22
一起加入到表TB3
这样得到表TB3(C11, C12, C22)比如:
TB1
C11 C12
K1 1.5
K1 2.0
K2 1.9
K2 3.2TB2
C21 C22
K1 5.1
K1 2.1
K1 1.6
K2 2.0
K2 2.3
K2 3.3需要查到结果为TB3
C11 C12 C22
K1 1.5 1.6 //1.6最接近1.5,并且>=
K1 2.0 2.1
K2 1.9 2.0
K2 3.2 3.3
现在有两个表,TB1和TB2,
TB1有COLUMN C11, C12,
TB2有COLUMN C21, C22;现在需要 在 TB2.C21 = TB1.C11,同时把最接近TB1.C12的TB2.C22 ,也就是在 TB1.C12 >= TB2.C22取最大的TB2.C22
一起加入到表TB3
这样得到表TB3(C11, C12, C22)比如:
TB1
C11 C12
K1 1.5
K1 2.0
K2 1.9
K2 3.2TB2
C21 C22
K1 5.1
K1 2.1
K1 1.6
K2 2.0
K2 2.3
K2 3.3需要查到结果为TB3
C11 C12 C22
K1 1.5 1.6 //1.6最接近1.5,并且>=
K1 2.0 2.1
K2 1.9 2.0
K2 3.2 3.3
给了
select c11,c21,c22
from tb1 t join inner (select c21,max(c22) as c22 from tb2 group by c21) s
on t.c11=s.c21 and t.c12 >=s.c22但是结果是
TB3
C11 C12 C22
K1 1.5 2.1
K1 2.0 2.1
K2 1.9 3.3
K2 3.2 3.3
select TB1.C11,TB1.C12,(select C22 from TB2 where C22>TB1.C12 order by C22 LIMIT 1) as C22 from TB1;
+------+------+------+
| C11 | C12 | C22 |
+------+------+------+
| K1 | 1.5 | 1.6 |
| K1 | 2.0 | 2.1 |
| K2 | 1.9 | 2.0 |
| K2 | 3.2 | 3.3 |
+------+------+------+
4 rows in set (0.00 sec)
select aa.pk1, aa.va1, ss.va2, ss.va3
from aa ,ss, (select aa.pk1 as pk1, aa.va1 as va1, min(ss.va2) as va2
from aa, ss
where
ss.fk1 = aa.pk1 and ss.va2 >= aa.va1
group by aa.va1, aa.pk1) s
where
aa.pk1 = s.pk1 and aa.va1 = s.va1
and ss.fk1 = s.pk1 and ss.va2 = s.va2
create table TB3
select TB1.C11,TB1.C12,(select C22 from TB2 where C22>TB1.C12 order by C22 LIMIT 1) as C22 from TB1;
能不能解释下mysql如何执行这个查询的?比较下效率,呵呵