我有一种情况,我试图查找在版本中有效的属性。我在下面有一个版本表和属性表。属性记录有一个版本,它们被引入和删除。
我正在尝试选择在引入和删除之间的属性。但是删除为空,这使我的加入变得混乱。我已经用下面的 SQL 进行了补偿(以一种丑陋的方式)。如果删除的 in 为 null,我将其设置为 int 的最大值。这可行,但是当 Removed In 为 null 时忽略连接中的第二个限定条件会很好。有什么想法吗?
**Version**
id Name
--- -----------------
1 VersionA
2 VersionB
**Property**
id Name IntroducedInVersion RemovedInVersion
--- ----------------- ------------------- -----------------
1 Property1 1 null
2 Property2 1 2
SELECT
p.PropertyName
,p.IntroducedInVersion
,p.RemovedInVersion
FROM
Version v
join Property p on p.IntroducedInVersion <= v.Id
and ISNULL(cp.RemovedInVersion, 2147483647) > v.Id
WHERE
v.Id = 1