、どのようにして2つのテーブルから同時に削除できますか?例えば
DELETE table1., table2. FROM table1, table2 WHERE (((table1.[Field1])=table2.[Field1]));
、どのようにして2つのテーブルから同時に削除できますか?例えば
DELETE table1., table2. FROM table1, table2 WHERE (((table1.[Field1])=table2.[Field1]));
あなたはそれに依存要素と他を削除DELETE CASCADEを使用することができます。
たとえば、学生テーブル、コーステーブル、および学生が従うすべてのコースをリストしたサブスクリプションテーブルを持っている場合は、サブスクリプションテーブルでCASCADEを使用して学生とその関連エントリを削除できます。
私は、ネストされたCURSORのことをお勧め:TABLE1内のすべてのレコードをこの意志ループ
DECLARE @OuterVar [datatype];
DECLARE @OuterPKey [datatype];
DECLARE @InnerPKey [datatype];
DECLARE OuterCursor CURSOR
FOR SELECT table1.[Field1], table1.[PrimaryKey]
FROM table1;
OPEN OuterCursor
FETCH NEXT FROM OuterCursor INTO @OuterVar, @OuterPKey;
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE InnerCursor CURSOR
FOR SELECT table2.[PrimaryKey]
FROM table2
WHERE table2.[Field2] = @OuterVar;
OPEN InnerCursor;
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM table1 WHERE [PrimaryKey] = @OuterPKey;
DELETE FROM table2 WHERE [PrimaryKey] = @InnerPKey;
FETCH NEXT FROM InnerCursor INTO @InnerPKey;
END;
CLOSE InnerCursor;
DEALLOCATE InnerCursor;
FETCH NEXT FROM OuterCursor INTO @OuterVar, @OuterPKey;
END;
CLOSE OuterCursor;
DEALLOCATE OuterCursor;
を、どこでTABLE1の値がレコードごとに、それは、table2の中でレコードを検索します[フィールド1]と表2。 。[Field2]は同じです。次に、両方のレコードを削除します。
なぜあなたは1つずつ削除できませんか? – Igoranze
SQL標準ではこれを許可していないため、ANSI-SQLの解決方法はありません(また、 '[Field1]'はANSI SQLの有効な識別子ではありません)。しかし、一部のDBMSには拡張機能があり、そうすることができます。どのDBMSを使用していますか? Postgres?オラクル? –