2

誰かが次の問題を解決する方法を知っているかどうか疑問に思っていました。私は約1週間解決策を探していましたが、これまでのところ運がありません.

関連するユーザーがいない場合、何万もの都市を削除する必要があるサイトがあります。

基本的に、テーブル「users」に「city id」が存在しない場合は、フォームテーブル「cities」を削除する必要があります。たとえば、「users.city_id」列に「cities.city_id」が見つからない場合、「cities」から行を削除する必要があるとします。これは、ユーザーがその都市に関連付けられていないことを意味します。

基本的に必要なことは、'cities' の単一の行ごとに、MySQL が users.city_id のすべての行を調べて、値が存在するかどうかを確認する必要があることです。存在する場合は次の行に移動し、存在しない場合は削除します。都市の行に移動し、次の行に移動します。

このようなクエリが可能かどうかさえわかりません...アドバイスをいただければ幸いです。

4

1 に答える 1

4

完全なスキーマにアクセスできなくても、以下に私の試みを示します。事態が混乱した場合に備えて、削除操作を実行する前にデータベースをバックアップしてください。訴えられたくありません:(

DELETE FROM cities WHERE id NOT IN (SELECT city_id FROM USERS);
于 2012-04-23T03:10:13.433 に答える