我想知道如果這個查詢可以進行修改,以達到我想要的:SQL總是返回從LUT中的所有行每個ID
SELECT
cv.[ID]
,cv.[CustomValue]
,cf.[SpecialInformationId]
FROM #CustomFields cf
FULL OUTER JOIN #CustomValues cv ON cf.SpecialInformationId = cv.id
這將返回所有cv.Id的。它還返回任何不匹配的cf.SpecialInformationId,其中的cv信息爲NULL。我真正想要的是每個cv實例,我希望每個cf都能顯示出來。 cf是查找表。在這種情況下有12個值,但每次查詢運行時都會有所不同。這裏有一個例子:
什麼該查詢當前返回:
cv.id cv.customvalue cf.specialinformationid
1 003 1
1 abc 2
2 004 1
2 1/1/2010 4
2 abc 2
3 009 1
4 003 1
4 acb 2
4 1/2/2010 4
我想它返回什麼:
cv.id cv.customvalue cf.specialinformationid
1 003 1
1 abc 2
1 NULL 3
1 NULL 4
1 NULL 5
2 004 1
2 abc 2
2 NULL 3
2 1/1/2010 4
2 NULL 5
3 009 1
3 NULL 2
3 NULL 3
3 NULL 4
3 NULL 5
4 003 1
4 acb 2
4 NULL 3
4 1/2/2010 4
4 NULL 5
左連接無法使用,因爲在只有12行查找表,所以如果使用左連接,則會獲得與完整外連接相同的結果。
這是我的其他問題的一個副產品: SQL 2 tables always return all rows from 1 table match existing on other
感謝
第一個查詢的結果似乎不符合您的查詢,您確定結果?如果你正在做cf.SpecialInformationId = cv.id,那麼cf.specialinformationid和cv.id是等於的,或者其中一個是空的,但是這兩個不能有一個值AND是不同的。 –