1

考虑这个例子:

SELECT    comment_date
        , array_agg(user_id) users
        , array_agg(comment) comments
FROM      user_comments
GROUP BY  comment_date
  1. 假设用户评论的索引引用相同的记录(例如,用户[3] 创建评论[3])是否安全?
  2. 两个数组的顺序是否可能引用不同的记录,可能是由于性能增强?

我对 Postgres 的内部结构知之甚少,无法信任 array_agg 排序。

4

1 回答 1

0

除非您明确指定它,否则您不能假设任何关于应用聚合函数的顺序。如果要确保两个调用array_agg具有相应的值,则应将order by子句添加到它们中。例如:

SELECT    date
        , array_agg(user_id ORDER BY user_id) users
        , array_agg(comment ORDER BY user_id) comments
FROM      user_comments
GROUP BY  date
于 2015-07-15T15:14:32.620 回答