无法更新 sql 中的列?
Cannot update a column in sql?
我无法使用以下查询更新我的备注栏
update Customers
set customers.Remarks = remarks_stg.remarks
from
(select remarks
from remarks_stg) remarks_stg
where customers.Remarks = 'updateme'
查询执行成功,但客户中的 remarks
列未更新。
我正在尝试从 remarks_Stg
table 的 remarks
列更新 customers
table 中的 remarks
列。
此致
已更新
试试这个:
update Customers
SET customers.Remarks= remarks_stg.remarks
from remarks_stg
where customers.Remarks='updateme'
但它会使用 table remarks_stg 中的第一个值,因此请尝试添加另一个条件,如下所示:
AND remarks_stg.Id = 2
更新客户
SET 备注 = (select 来自 remarks_stg 的备注)
其中备注 = 'updateme'
或
更新客户
SET 备注 = (select 来自 remarks_stg 的备注 WHERE id = [PARTICULAR ID] )
其中备注 = 'updateme'
您将需要发件人子句中的 "Customers" table 并将其与您的 "remarks_stg" table 合并。将下面的 "SomeColumn" 替换为两个 table 之间匹配的列。
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'
我认为以下查询的数据没有返回。
SELECT * FROM customers
Where customers.Remarks = 'update'
如果数据正在返回,更新就会完成
对了,查询中有一个逻辑错误。您没有指定要从 remarks_stg
table.
记录哪条记录
你需要在where条件中指定两个table之间的关系。
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
table 中的第一条记录。
更新
您可以使用 ROW_NUMBER()
执行此操作。您应该从 Customer
table.
中写一个唯一的列
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
注意:两个table的关系必须是。如果不是,你必须改变结构。
我无法使用以下查询更新我的备注栏
update Customers
set customers.Remarks = remarks_stg.remarks
from
(select remarks
from remarks_stg) remarks_stg
where customers.Remarks = 'updateme'
查询执行成功,但客户中的 remarks
列未更新。
我正在尝试从 remarks_Stg
table 的 remarks
列更新 customers
table 中的 remarks
列。
此致
已更新
试试这个:
update Customers
SET customers.Remarks= remarks_stg.remarks
from remarks_stg
where customers.Remarks='updateme'
但它会使用 table remarks_stg 中的第一个值,因此请尝试添加另一个条件,如下所示:
AND remarks_stg.Id = 2
更新客户
SET 备注 = (select 来自 remarks_stg 的备注)
其中备注 = 'updateme'
或
更新客户
SET 备注 = (select 来自 remarks_stg 的备注 WHERE id = [PARTICULAR ID] )
其中备注 = 'updateme'
您将需要发件人子句中的 "Customers" table 并将其与您的 "remarks_stg" table 合并。将下面的 "SomeColumn" 替换为两个 table 之间匹配的列。
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'
我认为以下查询的数据没有返回。
SELECT * FROM customers
Where customers.Remarks = 'update'
如果数据正在返回,更新就会完成
对了,查询中有一个逻辑错误。您没有指定要从 remarks_stg
table.
你需要在where条件中指定两个table之间的关系。
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
table 中的第一条记录。
更新
您可以使用 ROW_NUMBER()
执行此操作。您应该从 Customer
table.
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
注意:两个table的关系必须是。如果不是,你必须改变结构。