2

我有一个如下表:

+---+----------+----------+---------+---------+
+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 站点和论坛上进行了很好的搜索,但找不到一对多删除。有什么想法吗?

4

2 回答 2

4

尝试以下查询:

delete from table
where FIELD1 in (
    select a.FIELD1
    from (select * from table) a 
    where a.FIELD4='Y'
);
于 2012-07-29T15:59:19.197 回答
0

我认为您需要一个 Delete Select 语句。它基本上是删除查询中的选择语句。例如:

DELETE FROM `tablename` WHERE FIELD1 IN ( SELECT FIELD1 FROM `tablename` WHERE FIELD4 = `Y` )   );
于 2012-07-29T15:54:03.527 回答