[英]MySql update statement with subquery
請看一下我在MySql Workbench中編寫的以下語句:
update customer set flag = 1
where id in (select id from customer
group by phoneNumber
having count(phoneNumber) > 1);
顯示以下消息:
Error Code: 1093. You can't specify target table 'customer' for update in FROM clause
我究竟做錯了什么?
嘗試:
update customer set flag = 1
where id in (select * from (select id from customer
group by phoneNumber
having count(phoneNumber) > 1)t ) ;
這是另一個嘗試避免陷阱的變體(我使用了stmt的另一個組,請參見下文。它可能無法反映您正在嘗試執行的操作):
update customer a
join ( select id
from customer b
group by id
having count(1) > 1
) b on a.id = b.id
set a.flag = 1;
您的部分select id from customer group by phoneNumber
的語句是mysql的另一個怪癖。 在sql92中,它是無效的,並且除非id在功能上取決於電話號碼,否則它在sql99及更高版本中也是無效的。 您可以通過在@@ sql_mode中設置ONLY_FULL_GROUP_BY來強制執行更嚴格的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.