[解決済み] MS AccessでJOINの使用時に削除する方法は?
2022-02-19 02:42:09
質問内容
を使おうとしています。
DELETE
節を使用すると、問題が発生します。
JOIN
節があります。を使用することで達成できることに気づきました。
DISTINCTROW
というキーワードがあります。
例えば、以下のSQL文では、削除はできません。
DELETE Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
しかし、この文はそうです。
DELETE DISTINCTROW Table1.*
FROM Table1 INNER JOIN Table2 ON Table1.Name=Table2.Name;
-
なぜ
DELETE
を使用したときに動作します。DISTINCTROW
というキーワードは? - 具体的には、JETエンジンの中で何が起きていて、これを要求しているのでしょうか?
解決方法は?
Delete Table1.*
From Table1
Where Exists( Select 1 From Table2 Where Table2.Name = Table1.Name ) = True
私の答えを発展させると、公式SQLの仕様では、アクションクエリでJoinを使用することを特に規定していません。なぜなら、曖昧な結果を生み出す可能性があるからです。したがって、今回のようなアクションクエリでJoinを使用しないようにできれば、よりよい(Accessもより満足する)のです。AccessがDISTINCTROWを必要とする理由は、2つのテーブル間のJoinがTable1の行の重複を作成する可能性があるためです(つまり、Table2には複数の関連行がある)、Accessは混乱するのです。また、Joinを使用する際にプライマリキーが存在しないとAccessは失敗します。一般的には、アクションクエリでJoinを使用するのは避けた方がよいでしょう。
関連
-
[解決済み】Athena: スケールファクターでリソースを使い果たすクエリ
-
[解決済み】一括読み込みデータ変換エラー(切り捨て)
-
[解決済み] SQL Server - INNER JOIN WITH DISTINCT
-
[解決済み] オペランド型の衝突:uniqueidentifierはintと互換性がない
-
[解決済み] SQLサーバーで文字列をsmalldatetimeデータ型に変換する際、変換に失敗しました(静的値を除く)。
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] SQL ServerでINNER JOINを使用して削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] バックエンドバージョンでは、データベースのダイアグラムやテーブルのデザインはサポートされていません。
-
[解決済み】単一のクエリで加重平均を計算する
-
[解決済み】sys.dm_exec_sql_textはどのように機能するのでしょうか?
-
[解決済み] ''付近の構文が正しくない
-
[解決済み] ORA-01735: 無効な ALTER TABLE オプション - ヒキガエル
-
[解決済み] SQLエラーです。ORA-00922: オプションがないか無効です。
-
[解決済み] FROM のサブクエリにはエイリアスが必要です。
-
[解決済み] CLOBとNCLOBの違いは何ですか?
-
[解決済み] アクセスクエリーエラー(from句のシンタックスエラー)
-
[解決済み] SQLiteでどのようにピボットするか、つまり、長い形式で保存されたテーブルを広い形式で選択するか?