Sql server TSQL更新查询
我有如下数据:Sql server TSQL更新查询,sql-server,tsql,Sql Server,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。 我试着用一个循环来做这件事。有人能提出一个有效的方法来完成这个更
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时,应避免使用循环 我在手机上输入frim,所以不容易,但如果只需要修改一个值,您可以通过子查询来完成。 对于多元组值,我建议使用cte 更新表
Set aline=从表x中选择x.aline,其中aline不为null,x.seq=table.seq且aline不为null您应该使用子查询或cte。使用sql时,应避免使用循环 我在手机上输入frim,所以不容易,但如果只需要修改一个值,您可以通过子查询来完成。 对于多元组值,我建议使用cte 更新表 Set aline=从表x中选择x.aline,其中aline不为null,x.seq=table.seq且aline不为null
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;
试试这个:
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;
是否总是有线型='O'那些具有空值的?是的,下面的代码很好地完成了工作。是否总是有线型='O'那些具有空值的?是的,下面的代码很好地完成了工作。