我是SQL新手,無法找到如何進行以下查詢。當然,我錯過了一個非常基本的表達方式,但我無法自己找到它。SQL - 組會話日誌條目並按會話開始時間排序組
我有下面的表,用來存儲應用程序日誌條目。每個條目都有一個記錄時間戳,進行該條目的應用程序的標識符,應用程序實際執行的操作以及該應用程序實例給定會話的唯一ID。
item_id item_datetime app action session_id 1 2011-06-20 19:01:04 a start 23B6C531-6D38-4E47-A887-10B945B48BD9 2 2011-06-20 19:01:05 b start 7E6D0F55-4280-46DF-A829-F6821FF028D5 3 2011-06-20 19:03:45 b job 7E6D0F55-4280-46DF-A829-F6821FF028D5 4 2011-06-20 19:09:33 a job 23B6C531-6D38-4E47-A887-10B945B48BD9 5 2011-06-20 19:27:00 a quit 23B6C531-6D38-4E47-A887-10B945B48BD9 6 2011-06-20 19:50:00 c start 12345678-1234-4321-1234- 7 2011-06-20 19:50:01 c quit 12345678-1234-4321-1234- 8 2011-06-20 19:50:22 b quit 7E6D0F55-4280-46DF-A829-F6821FF028D5
在本例中,有3個不同的應用程序的 「a」, 「b」 和 「c」 的同時執行,每個會話重疊等。我需要的是按會話分組的列表,會話(結果組)應按會話開始時間排序。 對於上面的例子表,我希望下面的結果:
item_id item_datetime app action session_id 1 2011-06-20 19:01:04 a start 23B6C531-6D38-4E47-A887-10B945B48BD9 4 2011-06-20 19:09:33 a job 23B6C531-6D38-4E47-A887-10B945B48BD9 5 2011-06-20 19:27:00 a quit 23B6C531-6D38-4E47-A887-10B945B48BD92 2011-06-20 19:01:05 b start 7E6D0F55-4280-46DF-A829-F6821FF028D5 3 2011-06-20 19:03:45 b job 7E6D0F55-4280-46DF-A829-F6821FF028D5 8 2011-06-20 19:50:22 b quit 7E6D0F55-4280-46DF-A829-F6821FF028D5
6 2011-06-20 19:50:00 c start 12345678-1234-4321-1234- 7 2011-06-20 19:50:01 c quit 12345678-1234-4321-1234-
我試着組與ORDER BY,但問題是結果的排序是基於SESSION_ID的的字母順序 - 但這不是我需要什麼,會議編號的唯一性是重要的,他們的「價值」並不重要。
對於什麼數據庫? –
什麼意思是會話id,cos的唯一性,當您按值使用order時,將按字母順序進行排序,但您會達到所需的結果rt。即三個會話ID將在一起,然後通過將時間排序來爲您的時間排序 – Balanivash
這是MySQL服務器上MyISAM類型的表。 – cactusdev