【发布时间】:2017-08-25 16:36:55
【问题描述】:
假设我有下表:
ID|Col1 |Col2
1 |Test1 |Test12
2 |Test2 |Test22
2 |Test3 |Test32
当我使用如下查询时:
SELECT GROUP_CONCAT(Col1) as First, GROUP_CONCAT(Col2) as Second WHERE ID=2 GROUP BY ID
它有时会返回重新排列的 GROUP_CONCAT。例如:
ID|First |Second
2 |Test2,Test3|Test32,Test22
虽然我希望它会返回:
ID|First |Second
2 |Test2,Test3|Test22,Test32
如您所见,它切换了名为“Second”的列中的连接值。我怎样才能防止这种情况发生?
【问题讨论】:
-
使用
GROUP_CONCAT(Col2 ORDER BY Col2)。GROUP_CONCAT返回的顺序是 arbitray,因为 SQL 表中没有固有顺序。 -
您在哪里指定了订购方式?
-
@BoundaryImposition 我假设 GROUP_CONCAT 会通过附加找到的行(如 row1、row2、row3 等)来返回它。但显然它不会
-
那就是它的作用。但是您没有指定顺序。
-
@BoundaryImposition,至少并非总是如此。因为那样它就不会像我的示例中那样返回结构
标签: mysql group-concat arrangeoverride