我願意做這樣的事情:MYSQL:子查詢到在主查詢更新的表
- 在table標籤找到名稱=「someName」一行,remeber它的id
- 在同一個表查找另一行someCondition並設置在這一行col refference =上面的ID
試圖使用子查詢來做到這一點,但mysql拒絕說我不能子查詢我正在更新的表在主查詢中。
我該如何實現上述想法?
謝謝
我願意做這樣的事情:MYSQL:子查詢到在主查詢更新的表
試圖使用子查詢來做到這一點,但mysql拒絕說我不能子查詢我正在更新的表在主查詢中。
我該如何實現上述想法?
謝謝
你可以做到這一點
update TAGS set
reference =
(select my_id from
(select id as my_id from TAGS where name='someName')
as SUB_TAGS)
where someCondition;
不建議雖然。
編輯#1就能避免子查詢乾脆 - 作爲taspeotis rightly mentioned,通過join
與荷蘭國際集團的標準相同的表。代碼如下:
UPDATE
TAGS t1, TAGS t2
SET
t1.reference = t2.id
WHERE
t2.name = 'someName'
AND
t1.someField = someCondition;
這是一個更好的方法。
Convert your subquery to a join然後UPDATE
:
您也可以執行更新操作涉及多個表。但是,您不能將ORDER BY或LIMIT用於多表UPDATE。 table_references子句列出了連接中涉及的表。其語法在第12.2.8.1節「JOIN語法」中描述。下面是一個例子:
UPDATE items,month SET items.price=month.price
WHERE items.id=month.id;
The preceding example shows an inner join that uses the comma operator, but multiple-table
UPDATE語句可以使用任何類型的在SELECT語句,如LEFT JOIN聯接允許的。
我猜雙層嵌套解決mysql報告我的問題嗎?爲什麼不可取? – shealtiel 2011-01-08 22:33:10