group_concat sqlite 和 order by
Posted
技术标签:
【中文标题】group_concat sqlite 和 order by【英文标题】:group_concat sqlite and order by 【发布时间】:2013-02-04 21:18:39 【问题描述】:我正在尝试在 sqlite3 的 group_concat 中订购。 mysql 不支持这种方式,所以我不能这样做:
group_concat(logID order by logDateTime DESC)
我的完整查询在这里,我需要按 logDateTime 排序 logID。我在这里读到了一个子查询方法:Sqlite group_concat ordering,但我无法让它在我的查询中工作。
SELECT logID,
NULL AS sessionID,
logDateTime,
NULL AS sessionName,
NULL AS NamesInRandomOrder
FROM logs
WHERE sessionID IS NULL
UNION ALL
SELECT NULL,
sessions.sessionID,
MAX(logDateTime),
sessions.sessionName,
group_concat(logID)
FROM logs
JOIN sessions ON logs.sessionID = sessions.sessionID
GROUP BY sessions.sessionID
ORDER BY 3 DESC
【问题讨论】:
Sqlite group_concat ordering的可能重复 【参考方案1】:这对子查询进行排序,但 SQLite 不保证在所有情况下都保持顺序:
SELECT logID,
NULL AS sessionID,
logDateTime,
logName,
NULL AS NamesInRandomOrder
FROM logs
WHERE sessionID IS NULL
UNION ALL
SELECT NULL,
sessionID,
MAX(logDateTime),
sessionName,
group_concat(logName)
FROM (SELECT sessions.sessionID AS sessionID,
logDateTime,
sessionName,
logName
FROM logs JOIN sessions ON logs.sessionID = sessions.sessionID
ORDER BY sessions.sessionID,
logName)
GROUP BY sessionID
ORDER BY 3 DESC
【讨论】:
再次感谢您!有点令人沮丧,我离我需要的东西有多近,只是被 sqlite 的有限性质所阻碍。您是否知道任何替代方法来确保我的 logID 按 logDateTime 排序返回。我的最终应用程序实际上将有几列需要返回,就像上面显示的 logID 一样,所有这些列都需要按 logDateTime 列出/排序。以上是关于group_concat sqlite 和 order by的主要内容,如果未能解决你的问题,请参考以下文章
Sqlite Android order by & group_concat
获取 SQLite 中 GROUP_CONCAT 的所有 id