无法更新sql中的列?

时间:2017-03-16 06:23:29

标签: sql sql-server tsql sql-update multiple-columns

我无法使用以下查询更新我的备注栏

update Customers
set customers.Remarks = remarks_stg.remarks
from 
    (select remarks 
     from remarks_stg) remarks_stg
where customers.Remarks = 'updateme'

查询已成功执行,但客户中的remarks列未更新。

我正在尝试从remarks表的customers列更新remarks表中的remarks_Stg列。

此致

更新 enter image description here

4 个答案:

答案 0 :(得分:1)

尝试使用:

update Customers
SET customers.Remarks= remarks_stg.remarks
from remarks_stg
where customers.Remarks='updateme'

但是它会使用表remarks_stg中的第一个值,所以尝试添加另一个这样的条件:

AND remarks_stg.Id = 2

答案 1 :(得分:1)

更新客户

SET Remarks =(从remarks_stg中选择备注)

备注=' updateme'

OR

更新客户

SET Remarks =(从remarks_stg选择备注WHERE id = [PARTICULAR ID])

备注=' updateme'

答案 2 :(得分:1)

您将需要"客户" From子句中的表格,并将其加入" remarks_stg"表。替换" SomeColumn"下面列出了两个表之间的列匹配。

update Customers
set customers.Remarks = remarks_stg.remarks
from Customers 
Inner Join 
    (select remarks 
     from remarks_stg) remarks_stg
     On Customers.SomeColumn = remarks_stg.SomeColumn
where customers.Remarks = 'updateme'

答案 3 :(得分:1)

我认为来自以下查询的数据没有返回。

SELECT * FROM customers
Where customers.Remarks = 'update'

如果数据正在返回,则更新将完成

顺便说一句,查询中存在逻辑错误。您没有指定要从remarks_stg表中记录哪条记录。

您需要在where条件中指定两个表之间的关系。

Update Customers
Set customers.Remarks = remarks_stg.remarks
From
     (Select remarks, YourRelationshipColumn from remarks_stg) remarks_stg
Where
     Customers.Remarks = 'updateme' AND
     Customers.YourRelationshipColumn = Remarks_Stg.YourRelationshipColumn

如果您未指定关系,将检索remarks_stg表中的第一条记录。

<强>更新

您可以使用ROW_NUMBER()执行此操作。您应该从Customer表中编写一个唯一的列。

UPDATE Customers
SET Remarks = RESULT.remarks
FROM
(
    SELECT A.CustomerID, B.remarks
    FROM
        (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) RowId, * FROM Customers) A INNER JOIN 
        (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) RowId, * FROM remarks_stg) B ON A.RowId = B.RowId
) RESULT
WHERE
    Customers.CustomerID = RESULT.CustomerID

注意:两个表之间的关系必须是。如果没有,你必须改变结构。