[解決済み] ID が他のテーブルと一致しない sql 行を削除する
2022-04-14 22:09:25
質問
mysqlのテーブルで孤立したエントリーを削除しようとしています。
このようなテーブルが2つあります。
テーブル
files
:
| id | ....
------------
| 1 | ....
| 2 | ....
| 7 | ....
| 9 | ....
テーブル
blob
:
| fileid | ....
------------
| 1 | ....
| 2 | ....
| 3 | ....
| 4 | ....
| 4 | ....
| 4 | ....
| 9 | ....
は
fileid
と
id
カラムを使用して、テーブルを結合することができます。
テーブルのすべての行を削除したい
blob
ここで
fileid
はテーブルの中に見つからない
files.id
.
つまり、上記の例では、行を削除することになります。3 & 4(s)の行を削除することになります。
blob
テーブルを作成します。
解決方法は?
LEFT JOIN/IS NULLを使用する。
DELETE b FROM BLOB b
LEFT JOIN FILES f ON f.id = b.fileid
WHERE f.id IS NULL
NOT EXISTSを使用する。
DELETE FROM BLOB
WHERE NOT EXISTS(SELECT NULL
FROM FILES f
WHERE f.id = fileid)
NOT INを使用する。
DELETE FROM BLOB
WHERE fileid NOT IN (SELECT f.id
FROM FILES f)
注意事項
可能な限り、トランザクション内で DELETE を実行してください (サポートされていると仮定して - IE: MyISAM では未対応)。
関連
-
[解決済み] MySQLで1つを除くすべての列を選択しますか?
-
[解決済み] SQLのカラム名があいまいな場合のクエリエラー
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] 最初の行への結合方法
-
[解決済み] mysqldumpで特定のテーブルをスキップする
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み] 複数の列に対してSELECT DISTINCTする方法(またはできる方法)は?
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?
-
[解決済み】MySQLで正規表現による置換を行うには?
-
[解決済み] MySQL テーブルに行が存在するかどうかをテストする最良の方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
MySQL - ストアドプロシージャ (データ型、関数)
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] SQL Server FOR EACH ループ
-
[解決済み] アドホッククエリとは何ですか?
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] SQLでランダムな行を要求する方法は?
-
[解決済み] Entity Framework VS LINQ to SQL VS ADO.NETでストアドプロシージャを使う?[クローズド]