use*_*665 1 sql sql-server select where
我想UPDATE在表中的一列,但在每一行中,必须WHERE有另一行依赖于另一个值。
这是表格的样子。
5 | PriceList | 349FDAFD34M
5 | Footer1 | 987IOXG376L
5 | Header1 | 12WQX954MIO
7 | PriceList | NULL
7 | Footer1 | NULL
7 | Header1 | NULL
Run Code Online (Sandbox Code Playgroud)
结果应该是这样。
5 | PriceList | 349FDAFD34M
5 | Footer1 | 987IOXG376L
5 | Header1 | 12WQX954MIO
7 | PriceList | 349FDAFD34M
7 | Footer1 | 987IOXG376L
7 | Header1 | 12WQX954MIO
Run Code Online (Sandbox Code Playgroud)
但是此显示的查询不起作用,因为它返回许多行,因此并不精确。
update cSC_BusinessUnit
set defaultguid =
(
select defaultguid
from cSC_BusinessUnit
where BusinessUnitGUID = 5
)
where BusinessUnitGUID = 7
Run Code Online (Sandbox Code Playgroud)
您还需要对ClassName进行检查:
update b1
set b1.defaultguid =
(
select b2.defaultguid
from cSC_BusinessUnit b2
where b2.BusinessUnitGUID = 5
AND b2.ClassName = b1.ClassName
)
from cSC_BusinessUnit b1
where b1.BusinessUnitGUID = 7
Run Code Online (Sandbox Code Playgroud)
小智 5
也使用以下简短版本
UPDATE b1
SET b1.defaultguid = b2.defaultguid
FROM cSC_BusinessUnit b1
JOIN
cSC_BusinessUnit b2
ON b1.ClassName = b2.ClassName
And b2.BusinessUnitGUID = 5
WHERE b1.BusinessUnitGUID = 7
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19185 次 |
| 最近记录: |