我希望能够unnest()
在具有许多JOIN
s 的复杂 SQL 查询中使用 PostgreSQL 中的函数。这是示例查询:
SELECT 9 as keyword_id, COUNT(DISTINCT mentions.id) as total, tags.parent_id as tag_id
FROM mentions
INNER JOIN taggings ON taggings.mention_id = mentions.id
INNER JOIN tags ON tags.id = taggings.tag_id
WHERE mentions.taglist && ARRAY[9] AND mentions.search_id = 3
GROUP BY tags.parent_id
我想消除taggings
这里的表,因为我的mentions
表有一个名为taglist的整数数组字段,其中包含.mentions
我试过以下:
SELECT 9 as keyword_id, COUNT(DISTINCT mentions.id) as total, tags.parent_id as tag_id
FROM mentions
INNER JOIN tags ON tags.id IN (SELECT unnest(taglist))
WHERE mentions.taglist && ARRAY[9] AND mentions.search_id = 3
GROUP BY tags.parent_id
这可行,但会带来与第一个查询不同的结果。
所以我想做的是使用查询中的结果SELECT unnest(taglist)
来JOIN
补偿taggings
表。
我怎样才能做到这一点?
更新: taglist
与提及的相应标签 ID 列表相同。