[請益] mysql 指令格式問題

看板PHP作者 (knem)時間15年前 (2008/08/24 01:53), 編輯推噓4(407)
留言11則, 5人參與, 最新討論串1/1
想請教版上的大大 以下這段指令是以直覺的方式撰寫出來 但是卻無法再mysql上執行 delete from TABLE where a1 in ( select a1 from TABLE where a2 = 123 ) 錯誤訊息: (You can't specify target table 'TABLE' for update in FROM clause ) 這是一個很奇怪的語法問題 (= = 明明構想上沒有錯) 想請教版上大大是否有比較好的解決方案? <方案一> 有大大提到, a1是必需的嗎? 讓我重新思考table的schema 首先...這個語法的功能是用來將同一群組的資料全部刪除掉 a2在這裡的角色是當作"所有人的編號" a1在這裡的角色是當作"群組編號" 但是只知道a2的值 (由底下成員a2來引出a1這個群組編號, 再由群組編號來刪除掉整個群組) 所以說解決方案一就是把a1跟a2分離成兩個table 這樣就不會有重複查詢同一個table的語法問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.39.218

08/24 02:12, , 1F
update/delete不能在子查詢中使用相同的資料表
08/24 02:12, 1F

08/24 04:24, , 2F
postgre用過類似語法,好像可以
08/24 04:24, 2F

08/24 04:50, , 3F
不過...MSSQL竟然可以 = =
08/24 04:50, 3F

08/24 12:44, , 4F
需要用到a1嗎?
08/24 12:44, 4F
※ 編輯: knme 來自: 140.116.39.218 (08/24 16:15)

08/24 19:06, , 5F
嗯嗯,剛剛查了一下看看下面回應http://0rz.tw/5a4Gv
08/24 19:06, 5F

08/24 21:44, , 6F
雖然配合php用多次query可以解決沒錯,但是我希望只
08/24 21:44, 6F

08/24 21:45, , 7F
用一次query就把這個問題解決。 另外 like派不上用場
08/24 21:45, 7F

08/25 10:01, , 8F
可是你a1的存在是符合a2=123 那直接刪除a2=123 的a1
08/25 10:01, 8F

08/25 10:02, , 9F
就必然會被刪除了不是@@?
08/25 10:02, 9F

08/25 21:52, , 10F
但是因為a2 只代表單一個體, 而a1是代表整個群組
08/25 21:52, 10F

08/25 21:54, , 11F
而現在的目的是想要刪除整個群組 而非個體
08/25 21:54, 11F
文章代碼(AID): #18i4wj6V (PHP)