以下是我正在使用的查询:
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和位置排序。 预期产出:
A | 1,2,3,4 | XX
实际输出
A |2,4,1,3 | XX
第二列未根据page_no排序,位置在查询中给出。
abcd专栏有各种各样的数据,包括数字,特殊字符
例如:0900 dr jne pink
,0900 dr jne pink
,098 lakhani shoe
,iphone
,c??mpu men shoe sport
是abcd
列中的一些示例字词
我尝试使用整理“C”选项
有没有办法弄清楚哪个词搞砸了排序顺序
答案 0 :(得分:1)
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子句。
答案 1 :(得分:0)
您正在显示不完整的查询。但是,它似乎是这样的:
SELECT ... FROM (SELECT ... ORDER BY ...)
您的主要选择在此处没有ORDER BY
子句。因此,您可以按任何顺序获取结果行。 DBMS可以忽略子查询中的ORDER BY
子句,因为表中的数据(包括派生表,即子查询)被视为无序集。