【发布时间】:2013-10-22 14:20:15
【问题描述】:
我有一张桌子scraped_listings 和一张桌子scraped_categories。列scraped_listings.categories 是一个整数[] 数组,其中包含scraped_categories 中的行ID。
不知何故(可能是由于我不记得犯过的错误),一些 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,则应该删除它。
我该怎么做?
【问题讨论】:
-
可以安全地假设“数组”是指以逗号分隔的整数列表吗?
-
@Dan:是的;我将更新问题以使其更加明确。
-
对不起,我没有意识到 PostgreSQL 支持实际的数组作为列。
-
As always:请提供表定义和 Postgres 版本。
标签: sql arrays postgresql