我有一個表,看起來像這樣:表值參數進行過濾的第一場比賽的每一行
id1 | id2 | value | id3
1 | abc | 23 | apt-1
1 | abc | 24 | apt-2
2 | def | 25 | apt-3
3 | def | 25 | apt-3
我需要得到高於匹配的表值參數像這樣從表中的第一行:
id1 | id2 |
1 | abc |
2 | def |
我想要的結果是
id1 | id2 | value | id3
1 | abc | 23 | apt-1
2 | def | 25 | apt-3
相反,我回來三排在表中。
id1 | id2 | value | id3
1 | abc | 23 | apt-1
1 | abc | 24 | apt-2
2 | def | 25 | apt-3
我該如何解決這個問題?這會有什麼效果?對於我們編寫比當前正在讀取的數據更多的數據,這是一個臨時解決方案,但將來也將基於id3進行閱讀。
我們來調用表Foo和tvp tvpInput。
我嘗試以下兩個查詢:
--Approach 1
SELECT *
FROM Foo as ret
INNER JOIN @tvpInput t
ON
t.id1 = ret.id1
AND t.id2 = ret.id2
--Approach 2
SELECT *
FROM Foo AS ret
WHERE EXISTS
(
SELECT t.id1, t.id2 FROM @tvpInput t
WHERE
ret.id1 = t.id1
AND ret.id2 = t.id2
)
讓我們來談談1,abc。你如何確定你想要回到哪一排?有2行符合標準。是更低的值?或者,你回到哪一排有什麼關係?有幾種方法可以完成,它在一定程度上取決於這些答案。 –
這是一個很好的觀點。我只想要一個與標準相匹配的標準,它與哪個標準無關。 – ame