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'那些具有空值的?是的,下面的代码很好地完成了工作。