簡體   English   中英

MySQL:基於同一表的一條記錄中一個選定字段中的值刪除表中的多行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM