postgresql 当连接到table_B时,table_A中的字符串值(由string_agg创建)中的序列会改变

5tmbdcev  于 2023-05-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(128)

我最近在使用PostgreSQL时遇到了一个非常奇怪的问题(在元数据库环境中,因为我不能直接访问数据库)
在table_A中,我使用string_agg()将一系列字符串按一定顺序组合成一个字符串,例如:“A > B > C”或“3.5 > 4 > 5.6”,表_A中结果正确一致。
然而,当我在table_B中使用左连接table_A时,字符串中的序列被改变,例如。“A > C > B”,更糟糕的是,序列的变化随机出现,即,有时是“A > C > B”,有时是“B > A > C”,而且似乎从来都不正确。
我不知道这是元数据库问题还是我的脚本问题。你的知识将非常感激!
为了确保它不会因为Table_B中的脚本和Table_A中的太多列/值而变得复杂,我简化了Table_B中的脚本,只导入/连接一列和一条记录,问题仍然是一样的
例如
select B.id,A.string from table_B B left join table_A A on A.id = B.id where B.id = '123'
结果:123| 'B >C >A' //但是期望:123| 'A >B >C'

qyswt5oh

qyswt5oh1#

结果集的顺序取决于数据库选择的查询执行计划。如果使用string_agg()这样的聚合函数,则会按照查询计划生成行的顺序聚合行。如果你需要一个固定的顺序,你必须明确它:

string_agg(col, ',' ORDER BY col)

相关问题