我有两个表t1和t2。
t1有字段position
t2有字段start
& stop
我的内部联接如下:
select t1.*
from t1 inner join t2 on t1.position >= t2.start AND t1.Pos <= t2.stop
比如说:
t1.position
= 8 t2.start = 1
和t2.end = 15
;以及t2.start = 5
和t2.end = 10
我的查询将返回两行1&lt; 8&lt; 15和5&lt; 8&lt; 10。
我想要的只是第一行?
我怎样才能做到这一点?
答案 0 :(得分:0)
select t1.* from t1
inner join t2
on t1.position >= t2.start
AND t1.Pos <= t2.stop
LIMIT 1
答案 1 :(得分:0)
您可以在结果集上执行distinct,也可以先使用内部查询。如果你正在处理小数据集,我会使用distinct,否则使用内部查询。
鲜明:
select distinct t1.* from t1 inner join t2 on t1.position >= t2.start AND t1.Pos <= t2.stop
内部查询:
select t1.*
from t1
inner join
(
select t1.position
from t1
inner join t2 on t1.position >= t2.start
AND t1.position <= t2.stop
) t2 on t2.position = t1.position