2017-03-16 32 views
0

使用下面的查询无法更新SQL中的列?

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

成功执行的查询,但没有更新客户remarks专栏中,我不能更新我的备注栏。

我在尝试更新remarkscustomersremarksremarks_Stg表。

问候

更新 enter image description here

+1

备注表和客户表之间的关系是什么? – Shruti

+0

请显示示例数据。 – Cer

+0

@Shruti。没有关系 – Bodhi

回答

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 

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

+0

即使我没有任何关系列,他们都是独立表... – Bodhi

+0

我有大约91个客户,是否可以更新或合并备注栏直接发送到客户表。 – Bodhi

+0

没有什么东西正在返回.. SELECT * FROM customers Where customers.Remarks ='updateme' - Bodhi 5分钟前 – Bodhi

1

尝试使用这样的:

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

但它将使用第一个值从表remarks_stg所以要尽量添加另一个条件是这样的:

AND remarks_stg.Id = 2 
+0

这不起作用为了我。另外,请注意两张表都没有任何关系。他们是独立的表现在我想使用remarks_stg的记录来更新客户表 – Bodhi

+0

确实 SELECT * FROM Customers c WHERE c.Remarks ='updateme'return something? – CoridRocket

+0

什么都没有返回.. SELECT * FROM customers Where customers.Remarks ='updateme' – Bodhi

1

更新Custome RS

SET备注=(选择remarks_stg评论)

其中备注= 'updateme'

OR

更新的客户

SET备注=(从remarks_stg选择备注其中ID = [特定ID])

其中备注='updateme'

+0

这不适合我。另外,请注意两张表都没有任何关系。他们是独立的表,现在我想用remarks_stg的记录来更新客户表 - – Bodhi

1

您将需要From子句中的“Customers”表并将其与“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'