Join 内部联接限制为一行

Join 内部联接限制为一行,join,Join,我有两张桌子t1和t2 t1具有字段位置 t2有字段start和stop 我的内部连接如下: select t1.* from t1 inner join t2 on t1.position >= t2.start AND t1.Pos <= t2.stop 选择t1.* 从t1内部连接t1上的t2.position>=t2.start和t1.Pos从t1中选择t1.* 内连接t2 在t1.position>=t2.start上 和t1.Pos您可以对结果集执行disti

我有两张桌子t1和t2

t1具有字段
位置

t2有字段
start
stop

我的内部连接如下:

select  t1.* 
from    t1 inner join t2 on t1.position >= t2.start AND t1.Pos <= t2.stop
选择t1.*
从t1内部连接t1上的t2.position>=t2.start和t1.Pos
从t1中选择t1.*
内连接t2
在t1.position>=t2.start上

和t1.Pos您可以对结果集执行distinct或首先使用内部查询。如果您处理的是小数据集,我将使用distinct,否则使用内部查询

独特的:

select distinct t1.* from t1 inner join t2 on t1.position >= t2.start AND t1.Pos <= t2.stop
从t1.position>=t2.start和t1.Pos=t2.start上的t1内部连接t2中选择不同的t1.*

位置当你说你想要的只是第一行时,你总是想要一个特定的行吗?比如,在你的例子中,{start:1,end:15}?还是随便哪个先来?这很重要的原因是数据库可以以任何顺序返回示例中的记录。哪个DBMS?MySQL、SQL Server等?但是当使用内部查询时,我看不到t2中的任何字段。我怎样才能做到这一点?
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