我想做这样的事情:
尝试使用子查询执行此操作,但mysql拒绝说我无法查询我在主查询中更新的表。
我怎样才能实现上述想法?
谢谢
答案 0 :(得分:1)
Convert your subquery to a join然后UPDATE
:
您还可以执行覆盖多个表的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。
答案 1 :(得分:0)
你可以这样做
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;
这是一种更好的方法。