在SQLite中使用GROUP_CONCAT函数内的ORDER BY子句
发布时间:2020-12-12 18:57:13 所属栏目:百科 来源:网络整理
导读:我不认为我可以在GROUP_CONCAT函数中使用ORDER BY子句. 有没有人知道在SQLite中实现这种行为的棘手方法? 我之前看过这个question.但我有一个复杂的查询. 我的陈述如下: SELECT c.col1,c.col3,m.col3,m.col4,count(m.col1),count(re.col2) AS cnt,GROUP_CON
我不认为我可以在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) 然后,您需要在代码中拆分结果,以便返回您的排序和值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |