爲什麼sql沒寫錯,但是delete配合select聯合操作報錯?但是用子查詢又不報錯了?

      今天做題的時候,發現一個很鬱悶的地方,經過問人搜索之後,找到了答案。
      題目 https://blog.csdn.net/weixin_42845682/article/details/105449417


      是因爲:mysql 不能對同一個表進行 update(delete) 和 select 聯合操作
      例如:

update a set  a.x = 1  where a.y  in (select a.x from  a); 

      上邊語法是錯誤的,在對update 時不能再條件中對同一個a表進行 select 操作
      如果非得要操作 那隻能 把 條件中 再關聯一次(不能的緣由是因爲 條件中的查詢是 在 臨時表中查的,保存卻是原表,解決方法就是將查詢和保存都放在臨時就可以了)
      寫成這樣就可以了:

update a set a.x = 1    where  a.y  in  (  select t.x  from   (select x from a)t  );
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章