我有一個看起來像這樣的數據:TSQL更新查詢
Seq PairSeq LineType Aline Bline
1 451 L -3 3
2 451 O NULL NULL
3 453 O NULL NULL
4 453 L 2.5 -2.5
我需要簡單地更新與該行共享同一對SEQ值的NULL。 我試圖用循環做到這一點。任何人都可以提出一個有效的方法來完成此更新?提前致謝。
我有一個看起來像這樣的數據:TSQL更新查詢
Seq PairSeq LineType Aline Bline
1 451 L -3 3
2 451 O NULL NULL
3 453 O NULL NULL
4 453 L 2.5 -2.5
我需要簡單地更新與該行共享同一對SEQ值的NULL。 我試圖用循環做到這一點。任何人都可以提出一個有效的方法來完成此更新?提前致謝。
您使用子查詢或cte。在使用sql時,你應該避免使用循環。
我打字時我的手機,所以不容易,但如果只有一個值應該修改,你可以做一個子查詢。 對於我建議使用cte的多個值。
更新表 集艾琳=(選擇表X x.aline其中艾琳不是null,x.seq = table.seq)和艾琳不爲空
試試這個:
UPDATE YourTable
SET Aline = T2.Aline, Bline = T2.Bline
FROM YourTable T1
INNER JOIN (SELECT Seq, PairSeq, Aline, Bline
FROM YourTable
WHERE Aline IS NOT NULL and Bline IS NOT NULL) T2
ON T1.PairSeq = T2.PairSeq
WHERE T1.Aline IS NULL AND T1.Bline IS NULL;
CREATE TABLE #tt(seq INT,PairSeq INT,LineType VARCHAR(100),Aline FLOAT,Bline FLOAT)
INSERT INTO #tt
SELECT 1,451,'L',-3,3 UNION
SELECT 2,451,'O',NULL,NULL UNION
SELECT 3,453,'O',NULL,NULL UNION
SELECT 4,453,'L',2.5,-2.5
UPDATE t SET t.Aline=o.Aline,t.Bline=o.Bline FROM #tt AS t
INNER JOIN #tt AS o ON t.PairSeq=o.PairSeq AND o.Aline IS NOT NULL AND o.Bline IS NOT NULL
WHERE t.Aline IS NULL OR t.Bline IS NOT NULL
是否總是有LineType ='O'那些有NULL值? – McNets
是的下面的代碼很好地完成了這項工作。 – Riskworks