あるテーブルから別のテーブルにないものを選択する
2023-11-22 09:34:04
質問
あるテーブルにあり、別のテーブルにない行を見つけようとしています。両方のテーブルは異なるデータベースにあり、私がマッチングに使用しているカラムのカラム名も異なっています。
私はクエリ、以下のコードを持っています、そして、私はそれがおそらく動作すると思いますが、それはあまりにも遅いです。
SELECT `pm`.`id`
FROM `R2R`.`partmaster` `pm`
WHERE NOT EXISTS (
SELECT *
FROM `wpsapi4`.`product_details` `pd`
WHERE `pm`.`id` = `pd`.`part_num`
)
つまり、このクエリは以下のようにしようとしているのです。
R2R.partmasterデータベースから、wpsapi4.product_detailsデータベースにないすべてのidを選択します。私がマッチさせるカラムはpartmaster.id & product_details.part_numです。
どのように解決するのですか?
Sjoerdのanti-joinを発展させ、わかりやすい
SELECT WHERE X NOT IN (SELECT)
パターンを使用することもできます。
SELECT pm.id FROM r2r.partmaster pm
WHERE pm.id NOT IN (SELECT pd.part_num FROM wpsapi4.product_details pd)
を使うだけであることに注意してください。
`
を使う必要があるのは、予約語やスペースを含む名前だけで、通常のカラム名には使わないことに注意してください。
MySQL 5+ では、この種のクエリはかなり高速に実行されます。
MySQL 3/4 では遅いです。
問題のフィールドにインデックスがあることを確認します。
にインデックスを持つ必要があります。
pm.id
,
pd.part_num
.
関連
-
[解決済み】MySQLのエラーコードです。MySQL WorkbenchでUPDATE中に1175のエラーが発生しました。
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
[解決済み] なぜ SQLAlchemy の count() は生のクエリよりずっと遅いのでしょうか?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] CREATE TABLE を別途作成せずに SELECT 文で一時テーブルを作成する。
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?
-
[解決済み] MySQL select where column is not empty.
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
MySQLのWhereの使用方法について説明します。
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
[解決済み] [GROUP BY句に含まれるか、集約関数で使用される必要があります。
-
[解決済み】文字列からuniqueidentifierに変換する際に変換に失敗する - 2つのGUIDの場合
-
Mysql がエラーを報告 オペランドには 1 つのカラムが含まれている必要があります。
-
MySQLでテーブルを削除します。親行が削除または更新できません: 外部キー制約に失敗しました。
-
CMakeエラー。ソースディレクトリ "/xxx/mysql-5.6.21" に CMakeLists.txt がないようです。
-
[解決済み] なぜ SQLAlchemy の count() は生のクエリよりずっと遅いのでしょうか?
-
[解決済み] Ubuntu linux上で動作するリモートMySQLサーバーを再起動する方法は?
-
[解決済み] Mysqlでidを使用してテーブルから多くの行を削除する