繁体   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