我希望能够在一个复杂的unnest()查询中使用PostgreSQL中的JOIN函数,这个查询有很多JOIN。
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的所有链接标记I组成。
我试过以下几点:
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与相应的标记ids列表相同。
发布于 2013-04-17 09:41:10
像这样的事情应该有效:
...
tags t INNER JOIN
(SELECT UNNEST(taglist) as idd) a ON t.id = a.idd
...https://stackoverflow.com/questions/16054925
复制相似问题