繁体   English   中英

Postgres订购无法正常工作

[英]Postgres ordering not working as expected

以下是我正在使用的查询:

 SELECT T.abcd,
             String_agg(T.yyy, ',') AS yyys,
             T.bbb
      FROM   (SELECT s.abcd,
                     up.yyy,
                     s.bbb,
                     s.secondary_id
              FROM   A s
                     join B su
                       ON su.search_term_id = s.id
                     join lll_yyy up
                       ON up.lll = su.lll
              ORDER  BY s.abcd
                        su.page_no,
                        su.position) T GROUP  BY T.abcd, T.bbb

基本上,在聚合函数之后生成的数据顺序与预期的不同。

输出应按abcd和page_no和position排序。 预期产量:

A | 1,2,3,4 | XX

实际产量

A |2,4,1,3 | XX

第二列未根据查询中给定的page_no,position进行排序。

abcd列包含数字,特殊字符等各种数据。例如: abcd列中的一些示例术语是: 0900 dr jne pink0900 dr jne pink098 lakhani shoeiphonec??mpu men shoe sport

我尝试使用整理“ C”选项

有没有办法找出哪个词搞砸了排序顺序

聚合表达式中使用ORDER BY子句

SELECT T.abcd,
         String_agg(T.yyy, ',' ORDER BY s.abcd, su.page_no, su.position) AS yyys,
         T.bbb
  FROM   (SELECT s.abcd,
                 up.yyy,
                 s.bbb,
                 s.secondary_id
          FROM   A s
                 join B su
                   ON su.search_term_id = s.id
                 join lll_yyy up
                   ON up.lll = su.lll) T GROUP  BY T.abcd, T.bbb

派生表中的ORDER BY子句将被忽略。

您显示的查询不完整。 但是,似乎是这样的:

SELECT ... FROM (SELECT ... ORDER  BY ...)

您的主选择此处没有ORDER BY子句。 因此,您可以按任何顺序获取结果行。 DBMS可以忽略子查询中的ORDER BY子句,因为表(包括派生表,即子查询)中的数据被认为是无序集合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM