内部连接限制为一行

时间:2012-07-24 22:03:40

标签: join

我有两个表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中有两条记录,t2.start = 1t2.end = 15;以及t2.start = 5t2.end = 10

我的查询将返回两行1&lt; 8&lt; 15和5&lt; 8&lt; 10。

我想要的只是第一行?

我怎样才能做到这一点?

2 个答案:

答案 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