我試圖用在TYPE2中找到的值覆蓋在TYPE1中找到的值。SQL Server-從同一個表中的一列更新值到另一個
我寫了一個小提琴來嘗試它,但由於某種原因它沒有更新。
http://www.sqlfiddle.com/#!3/a4733/17
任何原因,我在TYPE1值沒有更新?
我試圖用在TYPE2中找到的值覆蓋在TYPE1中找到的值。SQL Server-從同一個表中的一列更新值到另一個
我寫了一個小提琴來嘗試它,但由於某種原因它沒有更新。
http://www.sqlfiddle.com/#!3/a4733/17
任何原因,我在TYPE1值沒有更新?
這對我的作品
select * from stuff
update stuff
set TYPE1 = TYPE2
where TYPE1 is null;
update stuff
set TYPE1 = TYPE2
where TYPE1 ='Blank';
select * from stuff
在更新查詢之前放置了選擇查詢,因此您只能看到初始數據。將select * from stuff;
放到列表的末尾。
你的SELECT語句是更新語句之前 看到Updated fiddle
UPDATE a
SET a.column1 = b.column2
FROM myTable a
INNER JOIN myTable b
on a.myID = b.myID
爲了兩個 「A」 和 「B」 的工作,這兩個別名必須被定義爲
UPDATE TABLE_NAME SET COLUMN_A = COLUMN_B;
更容易。至少在Oracle SQL上,我不知道這是否適用於其他方言。
是的,也適用於SQL Server(所以你的回答對於這個問題是完全有效的)。 – 2018-02-09 10:30:51
我得到錯誤:子查詢返回了超過1個值。當子查詢遵循=,!=,<, <= , >,> =或當子查詢用作表達式時,這是不允許的。 – 2018-02-21 17:04:15
是的,你說得對。但是在運行一次update語句之後,我會再次運行select語句......但是沒有改變。每次運行後有沒有新的小提琴實例? – Keven 2013-04-23 23:11:44
@Keven是的,每個SQLFiddle執行獨立於上一次運行。 – 2013-04-24 00:06:21