Sql 如何加入具有范围的pk
我有以下表格: 表ASql 如何加入具有范围的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
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)?