1

我有两个表 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 < 8 < 15 和 5 < 8 < 10。

我想要的只是第一行?

我怎样才能做到这一点?

4

2 回答 2

0
select t1.* from t1
inner join t2 
on t1.position >= t2.start 
AND t1.Pos <= t2.stop
LIMIT 1
于 2012-07-24T22:12:23.850 回答
0

您可以对结果集执行不同的操作,也可以先使用内部查询。如果您正在处理小型数据集,我会使用不同的,否则使用内部查询。

清楚的:

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
于 2012-07-24T22:13:57.330 回答