私はテーブルscraped_listings
とテーブルを持っていますscraped_categories
。列scraped_listings.categories
は、 の行の ID を含む integer[] 配列scraped_categories
です。
どういうわけか(おそらく私が覚えていない間違いによるものです)、いくつかのscraped_listings行には、カテゴリ行に属さないカテゴリのIDがあります(これらの行は削除されていると思います)。
次のクエリがあります。これにより、影響を受ける行が得られます。
SELECT * FROM scraped_listings a
JOIN (
SELECT array_agg(id) AS ids
FROM scraped_categories
) b ON NOT a.categories <@ b.ids;
今やりたいことはcategories
、このクエリで見つかった行から無効な ID を削除することです。配列内のアイテムが有効な Scraped_category ID でない場合は、削除する必要があります。
どうすればこれを行うことができますか?