2012-07-29 14 views
2

我有一个单一的表中的一个记录删除多个行如下:MySQL的:在基于一个值的表中的一个选定的域在同一表

+---+----------+----------+---------+---------+ 
+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将最终成为一个复选框,并且所需的MySQL将在PHP脚本中调用。考虑到这一点,如果解决方案涉及PHP,这不会是一个问题。

我已经很好地搜索了PHP和MySQL网站和论坛,但找不到一对多删除。那里有任何想法?

回答

4

尝试用下面的查询:

delete from table 
where FIELD1 in (
    select a.FIELD1 
    from (select * from table) a 
    where a.FIELD4='Y' 
); 
+0

技能有LolCoder,你钉它喋喋不休!我必须尝试过这么多的变化,而不是在这一个。我真的很感激它! – user1458484 2012-07-29 16:51:29

0

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

DELETE FROM `tablename` WHERE FIELD1 IN (SELECT FIELD1 FROM `tablename` WHERE FIELD4 = `Y`) ); 
相关问题