Sql 如何加入具有范围的pk

Sql 如何加入具有范围的pk,sql,join,range,Sql,Join,Range,我有以下表格: 表A PK VALUE ---------- 01 AA 03 BB 07 CC 19 DD 表B FROM TO VALUE ------------------ 01 04 ZZ 05 10 YY 11 20 XX 我想合并这两个表,以便表A中的PK与表B中的到范围相匹配 预期的结果将是: PK VALUE FROM TO VALUE ---------------------- 01 AA 01 04 ZZ 03 BB 01 04 ZZ

我有以下表格:

表A

PK VALUE
----------
01 AA
03 BB
07 CC
19 DD
表B

FROM TO VALUE
------------------
01   04 ZZ
05   10 YY
11   20 XX
我想合并这两个表,以便表A中的
PK
与表B中的
范围相匹配

预期的结果将是:

PK VALUE FROM TO VALUE
----------------------
01 AA    01   04 ZZ
03 BB    01   04 ZZ
07 CC    05   10 YY
19 DD    11   20 XX
有什么建议吗


非常感谢你

您可以使用
介于
条件之间的
连接

select ta.*, tb.*
from tablea ta
inner join tableb tb on ta.pk between tb.from and tb.to
或者使用以下方法进行显式比较:

select ta.*, tb.*
from tablea ta
inner join tableb tb 
    on  ta.pk >= tb.from 
    and ta.pk <= tb.to
选择ta.*,tb*
从表A到表A
内部联接表B tb
在ta.pk>=tb.from上

和ta.pk您可以使用以下命令:

SELECT A.PK, A.VALUE, B.[FROM], B.[TO], B.VALUE
FROM A INNER JOIN B ON A.PK BETWEEN B.[FROM] AND B.[TO]


您考虑删除范围并使用精确值。在MSMS上显示以下内容:

SELECT A.PK, A.VALUE, B.[FROM], B.[TO], B.VALUE
FROM A INNER JOIN B ON A.PK BETWEEN B.[FROM] AND B.[TO]


因此,您当前的解决方案并没有那么低效。

这不是太耗费资源了吗?我们正在考虑使用精确的值将从更改为,并将所有需要的行添加到表中。哪一个更有效?非常感谢。您正在使用哪些数据库管理系统(mysql、tsql/sql server、oracle、postgresql、mariadb)?