2013-03-19 77 views
4

我需要更新SQLite表。SQLite更新查詢 - 使用別名的子查詢不起作用

表看起來像:

ID | Address   | CallNumber | RefID 
-----+--------------------+------------------------------------------- 
ef78 | library   | 2002/13  | 100002 
no56 | Lit    | 0189   | 100003 
rs90 | temp    |    | 100003 

對於地址的每個列=「上火」有一個列地址=「臨時」具有相同REFID。 現在我需要用具有相同RefID的列中的值「CallNumber」更新每個Address =「temp」。

更新後的表應該是這樣的:

ID | Address   | CallNumber | RefID 
-----+--------------------+------------------------------------------- 
ef78 | library   | 2002/13  | 100002 
no56 | Lit    | 0189   | 100003 
rs90 | 0189    |    | 100003 

我嘗試這樣做:

UPDATE Location 
SET address = foo.callnumber 
FROM (select RefID, CallNumber FROM Location) foo 
WHERE foo.RefID=Location.RefID AND Location.Address = 'temp'; 

但所有我得到的是 「從」 語法錯誤附近。

任何線索?

回答

12

UPDATE命令do not have a FROM clause

使用相關子查詢:

UPDATE Location 
SET Address = (SELECT CallNumber 
       FROM Location L2 
       WHERE L2.RefID = Location.RefID 
       AND L2.Address = 'Lit') 
WHERE Address = 'temp' 
+0

這工作,但如果我想更新多個字段,而不是同一個採石場內多次叫什麼? – 2015-10-06 09:01:21

+3

@PiniCheyni然後你必須決定是否避免多個子查詢比解決你的實際問題更重要。 – 2015-10-06 09:17:05