2013-02-20 359 views
0

我想在sqlite3中的group_concat內部進行排序。這不是因爲它是MySQL的方式支持,所以我不能做到這一點:group_concat sqlite和順序

group_concat(logID order by logDateTime DESC) 

我的全查詢是在這裏,我需要LOGID由logDateTime訂購。我在這裏閱讀了子查詢方法: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 

回答

0

此訂單子查詢,但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 
再次
+0

您,謝謝!有點令人沮喪,我得到我需要的東西有多接近,只是被sqlite的有限性質所阻擋。你知道任何其他方法來確保我的logID由logDateTime回來排序。我的最終應用程序實際上有幾列需要返回,就像上面顯示的logID一樣,所有這些列都需要由logDateTime列出/排序。 – livinzlife 2013-02-20 21:04:08