我有一张mysql表因为之前没有缺少部分字段内容,想通过查询更新来添加字段,遇到了报错:You can’t specify target table for update in FROM clause,从网上查询到错误的解决方法,大概为用一张中间表来存放结果来更新,sql语句如下
/*因为city的名字有很多,所以用参数来传递
*/
set @city='南昌'
UPDATE hotel set city=@city where User_id in
(SELECT namelike from ( SELECT User_id as namelike FROM `hotel` where name like concat('%',@city,'%' )) as a)
我用name的模糊查询得到user_id来更新内容
#查询模拟更新
update hotel a INNER JOIN
(select CityName from city) as c
set a.city=c.CityName
where a.`name` like CONCAT('%',c.CityName,'%')
#删除重复的数据
DELETE from Item_detail where item_id in(SELECT b.item_id from (SELECT item_id from Item_detail GROUP BY item_id having count(item_id)>1) b)