[英]MySQL: Delete multiple rows in a table based on a value in one selected field in one record of the same table
我有一張桌子,如下所示:
+---+----------+----------+---------+---------+
+ID + FIELD 1 + FIELD 2 + FIELD 3 + FIELD 4 +
+---+----------+----------+---------+---------+
+ 1 + AAA + 1234 + ABC + Y +
+ 2 + AAA + 1234 + DEF + +
+ 3 + AAA + 1234 + GHI + +
+ 4 + BBB + 1234 + ABC + +
+ 5 + CCC + 1234 + JKL + +
+---+----------+----------+---------+---------+
我有一個正在運行的進程,可以將FIELD4設置為“ Y”,然后運行另一個進程來檢查FIELD4中的“ Y”值。
我需要編寫一個查詢(或一些可能的查詢),該查詢將刪除FIELD4 ='Y'的記錄,然后還要刪除所有其他記錄,其中FIELD1與原始刪除的記錄具有相同的值。
作為記錄,FIELD4最終將成為一個復選框,並且將從PHP腳本內調用所需的MySQL。 考慮到這一點,如果解決方案涉及PHP,那么這將不是問題。
我對PHP和MySQL網站和論壇進行了很好的搜索,但是找不到“一對多”刪除。 有什么想法嗎?
嘗試以下查詢:
delete from table
where FIELD1 in (
select a.FIELD1
from (select * from table) a
where a.FIELD4='Y'
);
我認為您需要一個Delete Select語句。 它基本上是刪除查詢中的select語句。 例如:
DELETE FROM `tablename` WHERE FIELD1 IN ( SELECT FIELD1 FROM `tablename` WHERE FIELD4 = `Y` ) );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.