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」の値をチェックする 2 番目のプロセスを実行しています。

FIELD4 = 'Y' のレコードを削除するクエリ (またはおそらくクエリ) を作成する必要がありますが、FIELD1 が最初に削除されたレコードと同じ値である他のすべてのレコードも削除します。

記録として、FIELD4 は最終的にチェック ボックスになり、必要な MySQL は PHP スクリプト内から呼び出されます。これを念頭に置いて、ソリューションに PHP が含まれる場合、これは問題になりません。

PHP と MySQL のサイトとフォーラムをよく検索しましたが、1 対多の削除が見つかりません。そこに何かアイデアはありますか?

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

DeleteSelectステートメントが必要だと思います。基本的に、削除クエリのselectステートメントです。例えば:

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