假設我有下表:
Id | QuestionId
----------------
1 | 'MyQuestionId'
1 | NULL
2 | NULL
2 | NULL
它應該像這樣
- 查找相同Id的所有結果
- 如果其中任何一個具有 QuestionId IS NOT NULL,請不要觸摸具有該 Id 的任何行。
- 僅當相同 Id 的所有結果的 QuestionId 為 NULL 時,才洗掉具有該 Id的所有行。
所以在這種情況下,它應該只洗掉 Id=2 的行。
我在任何地方都沒有找到這種情況的例子。我嘗試了一些排名、計數、分組依據的選項,但沒有任何效果。你能幫助我嗎?
uj5u.com熱心網友回復:
您可以為此使用可更新的 CTE 或派生表,并使用視窗函式計算計數。
WITH cte AS (
SELECT t.*,
CountNonNulls = COUNT(t.QuestionId) OVER (PARTITION BY t.Id)
FROM YourTable t
)
DELETE cte
WHERE CountNonNulls = 0;
db<>小提琴
請注意,此查詢根本不包含任何自聯接。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/495807.html
