2012-07-09 49 views
2

我想升級表中的所有列,什麼我的目標做的是retreive從該行一列,將更新再更新它,像:轉換值(50)

update works 
set encrpyted_item_no = (CAST(RTrim((
    select unencrypted_item_no 
    from works 
    where name = name 
) AS VARBINARY(50)) 

我知道查詢是錯誤的,它只是一個示例,向您展示我的目標是做什麼。

我希望它從它的行選擇列unencrypted_item_no然後更新同一行與它從unencrypted_item_no這樣做對整個表獲取數據。

我該如何做到這一點?

+0

所以,如果你有兩個同名的行,其中一個有item_no = 5,另一個有item_no = 3,哪一個獲勝? – 2012-07-09 15:21:27

+0

如果它來自同一行,那麼你不應該使用子查詢,就像Bort和Gaby建議的那樣。如果它是來自同一個表的數據,但不一定是同一行,那麼你會做一個額外的FROM。 – 2012-07-09 15:28:31

回答

5

你不應該需要做一個子選擇,引用了一組其他列將根據行的基礎上連續工作,即:

UPDATE works 
SET encrpyted_item_no = CAST(RTrim(unencrypted_item_no) AS varbinary(50)) 
2

不應該這樣就夠了嗎?

update works 
set encrypted_item_no = CAST(RTrim(unencrypted_item_no) AS VARBINARY(50))