[英]MySQL DELETE With a Sub-Query using Having and Count
我試圖使用以下查詢刪除多個條目:
首先,我使用此查詢找到要刪除的條目:
SELECT guid FROM account GROUP BY guid,type HAVING count(type) > 1);
然后我將此查詢添加到DELETE語句:
DELETE FROM account WHERE guid IN (SELECT guid FROM account GROUP BY guid,type HAVING count(type) > 1);
但我得到這個錯誤:
您無法在FROM子句中為更新指定目標表'account'
我認為您需要使用臨時表來滿足您的需求,如下所示:
第1步:創建臨時表
CREATE TEMPORARY TABLE MyTemp SELECT guid FROM account GROUP BY guid,type HAVING count(type) > 1;
在delete語句中使用臨時表
DELETE FROM account WHERE guid IN (SELECT guid FROM MyTemp);
刪除臨時表
DROP TEMPORARY TABLE MyTemp;
編輯:我認為使用* 兩個嵌套表的方法也有效:
DELETE FROM account
WHERE guid IN
(SELECT guid FROM
(SELECT guid FROM account
GROUP BY guid,type HAVING count(type) > 1) as MyTemp
)
你的問題解決了,就像下面這樣做..
DELETE FROM account
WHERE guid IN
(SELECT * FROM
(SELECT guid FROM account
GROUP BY guid,type
HAVING count(type) > 1) AS a);
首先創建視圖
create view view_acct as
SELECT guid FROM account
GROUP BY guid,type HAVING count(type) > 1;
使用后查看
DELETE FROM account WHERE guid in (select * from view_acct);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.