1
我遇到了一種情況,我試圖找到在版本中有效的屬性。我有一個版本表和屬性表下面。財產記錄有一個版本,他們被介紹和刪除英寸如何處理表中的可空列加入
我想選擇之間的介紹和刪除的屬性。刪除是空然而,這混亂了我的加入。我用下面的SQL補償了(以醜陋的方式)。如果刪除的是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
Thanks @Bohemian我認爲這將工作,如果我改變這個「ifnull(RemovedInVersion,v.id)」爲「ifnull(RemovedInVersion - 1,v.id)」。我不希望RemovedInVersion是包容性的。 – WayneB 2013-04-25 18:35:19