加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在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)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读