2017-03-16 34 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'