con*_*ius 6 sql sqlite group-concat
我不认为我可以ORDER BY在GROUP_CONCAT函数内部使用子句.
有没有人知道实现这种行为的棘手方法SQLite?
我之前看过这个问题.但我有一个复杂的查询.
我的陈述如下:
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
Run Code Online (Sandbox Code Playgroud)
Group1并且Group2来自同一个表但不同的列:我想保留Group1with 的顺序Group2:
table t3
+------+------+
| col1 | col2 |
+------+------+
| 1 | A |
| 2 | B |
| 3 | C |
| 4 | D |
| 5 | E |
+------+------+
Run Code Online (Sandbox Code Playgroud)
所以如果Group1看起来2,1,3 Group2应该像这样B,A,C
SQLite不支持ORDER BY内部GROUP_CONCAT,但你实际上可以伪造它:
GROUP_CONCAT(list_order || ':' || value)
Run Code Online (Sandbox Code Playgroud)
然后,您需要在代码中拆分结果,以便返回您的排序和值.
con*_*ius -3
我已经尝试过了,它成功了
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 (
SELECT col1, col2, col3, col4, col5 FROM t3 ORDER BY col1
) AS 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
Run Code Online (Sandbox Code Playgroud)