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