我是SQL Server的新手,我遇到了很大麻烦。 我想为idp列@ table1的每个值执行更新查询。 LaysName列的值为NULL。 我的简单问题是:如何循环@ table1? 这是我的剧本:
DECLARE @table1 TABLE ( idp )
INSERT into @table1 SELECT NCid FROM dbo.NorthwindCustomer
FOREACH idp in @table1
BEGIN
UPDATE dbo.LaysCustomer
SET LaysName = (SELECT Name FROM dbo.NorthwindCustomer WHERE NCid = idp)
WHERE LCid = idp
END
谢谢大家!
答案 0 :(得分:4)
无需循环。您可以使用UPDATE FROM。
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<style>
@media(max-width: 991px) {
.pull-right,
.pull-left {
float: none!important;
}
}
</style>
</head>
<body>
<div class="row" style="height:500px;">
<div class="col-md-6 pull-right" style="height:25%;background:#080;color:#fff;text-align:center;">2</div>
<div class="col-md-6 pull-left" style="height:50%;background:#080;color:#fff;text-align:center;">1</div>
<div class="col-md-6 pull-right" style="height:25%;background:#080;color:#fff;text-align:center;">3</div>
</div>
</body>
</html>
答案 1 :(得分:0)
使用基于设置的方法..
UPDATE c
set c.name=n.name
from
dbo.LaysCustomer c
join
dbo.NorthwindCustomer n
on
N.NCid =c.idp
答案 2 :(得分:0)
更新可以同时处理多条记录。你也不需要本地表。看看这个查询:
UPDATE dbo.LaysCustomer SET LaysName=C.Name
FROM dbo.NorthwindCustomer C
WHERE LCid=C.NCid
如果你真的想使用@ table1(它的例子?)你可以使用:
DECLARE @table1 TABLE ( idp int )
INSERT into @table1 SELECT NCid FROM dbo.NorthwindCustomer
UPDATE dbo.LaysCustomer SET LaysName=C.Name
FROM dbo.NorthwindCustomer C
JOIN @table1 T ON C.NCid=T.idp
WHERE LCid=C.NCid
但是,正如我所说,我更喜欢直接转移。