我在我的數據庫中有一個sql-view,它使用UNION來連接不同的結果(一邊包含左連接,而另一邊使用NULL作爲佔位符缺少值)。在連接的一部分中,一個屬性(外鍵)爲空,而另一部分包含一個值(對於相同的唯一ID)。所以我的加入將會給我一個結果集是這樣的:SQL:如何根據某些屬性值僅選擇不同的行
ID | ForeignKey
1 NULL
1 123
2 NULL
3 NULL
4 NULL
4 234
我儘量減少這種結果設置爲包含一個唯一的ID只有條目,但我無法對證NULL的ForeignKey的,因爲這樣我會過濾掉所有密鑰爲NULL的其他行。
我正在尋找的是一種告訴SQL檢查整個結果集是否使用相同ID兩次的方法。如果它發現這樣的重複(如上面的ID 1和4的條目),它應該只顯示具有值(123和234)的那個。具有NULL的條目應該被過濾掉。
如果找不到重複(如ID 2和3),應使用該條目。
所以我要變換的上述結果設置爲這樣:
ID | ForeignKey
1 123
2 NULL
3 NULL
4 234
我試圖通過使用OVER關鍵字和PARTITION BY ID來解決問題,其中我設置ROWNUMBER爲等於1。這過濾掉但它總是選擇用NULL,而不是一個實際鍵的條目,所以錯誤的結果看起來像這樣重複的條目:
ID | ForeignKey
1 NULL
2 NULL
3 NULL
4 NULL
您與OVER(PARTITION BY)解決方案會工作一世如果您還包括ORDER BY ForeignKey DESC – 2014-11-14 12:55:50