在SQLite中使用GROUP_CONCAT函数内的ORDER BY子句

前端之家收集整理的这篇文章主要介绍了在SQLite中使用GROUP_CONCAT函数内的ORDER BY子句前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不认为我可以在GROUP_CONCAT函数中使用ORDER BY子句.

有没有人知道在sqlite中实现这种行为的棘手方法

我之前看过这个question.但我有一个复杂的查询.

我的陈述如下:

SELECT
    c.col1,c.col3,m.col3,m.col4,count(m.col1),count(re.col2) AS cnt,GROUP_CONCAT(p.col1 ORDER BY p.col1) AS "Group1",GROUP_CONCAT(p.col2 ORDER BY p.col1) AS "Group2",GROUP_CONCAT(CASE WHEN con.col3 is null THEN p.col1 ELSE con.col3 END),con.col4,con.col5,p.col3
FROM t1 re
    INNER JOIN t2  c  ON (re.col1  = c.col1)
    INNER JOIN t3  p  ON (re.col2  = p.col1)
    LEFT JOIN  t4 con ON (con.col1 = p.col2)
    INNER JOIN  t5 m  ON (m.col1   = c.col5) 
GROUP BY re.col1

Group1和Group2来自同一个表但不同的列:我想保留Group1与Group2的顺序:

table t3 
+------+------+
| col1 | col2 |
+------+------+
|    1 | A    |
|    2 | B    |
|    3 | C    |
|    4 | D    |
|    5 | E    |
+------+------+

所以如果Group1看起来像这样2,1,3 Group2应该看起来像这个B,A,C

解决方法

sqlite不支持GROUP_CONCAT中的ORDER BY,但实际上你可以伪造它:

GROUP_CONCAT(list_order || ':' || value)

然后,您需要在代码中拆分结果,以便返回您的排序和值.

猜你在找的Sqlite相关文章