0

ID のリストがあり、MYSQL クエリを作成してこれらの ID に関する情報を取得します。

私が必要としているのは、ID のリストからそれらを削除するために、データベースに存在しなくなった ID を把握する方法です。

私が今思いつかない簡単な解決策はありますか?

4

2 に答える 2

1

追加の (一時) テーブルを作成し、それに ID のリストを入力し、クエリを実行して存在しない ID を見つけます。例えば ​​-

CREATE TEMPORARY TABLE temp(id INT);
INSERT INTO temp VALUES (1), (2), (8), (10);

-- View non existing ID:
SELECT t.id FROM temp t
  LEFT JOIN your_table a 
    ON a.id = t.id
  WHERE a.id IS NULL;

DROP TEMPORARY TABLE IF EXISTS temp;

次に、php アプリケーションでこのデータセットを読み取り、ID のリストを更新します。

于 2012-08-16T06:09:58.137 に答える
0

これはあなたのテーブル構造を知らずに書かれているので、頭のてっぺんを作っていますが...

次のように、ID と INFO の 2 つのテーブルがある場合:

ID (IDCOL int, DATEENTERED datetime)
INFO (INFOID int, ID_ID int, ID_NAME varchar(50))

次に、クエリを実行できます

SELECT * FROM ID WHERE IDCOL NOT IN (SELECT ID_ID FROM INFO)

そして、INFO に対応するエントリがない ID のすべてのエントリを返す必要があります。

その後は、適切な削除ステートメントを作成するケースです。

すべてをワンステップで行うことができます

DELETE FROM ID WHERE IDCOL NOT IN (SELECT ID_ID FROM INFO)

しかし、私は通常、DB に変更をコミットする前に、トランザクションを台無しにしていないことを確認できるように、定義済みのトランザクションで削除を行うことを好みます。

于 2012-08-15T23:24:34.183 に答える