簡體   English   中英

如何在MYSQL中按列分組兩次

[英]How to group by columns twice in MYSQL

我有一個看起來像一個表的數據庫這些領域 我想返回所有學生的名字和姓氏,然后按“瞳孔組”將它們分組,然后按年份分組,並按字母順序的DESC(pupil_group),ASC(年份)和字母順序的DESC(姓氏)對組進行排序。

例如,運行SELECT * FROM pupils; 在上表中應返回以下內容:

(((('Jonathan', 'Morris'))), ((('Amber', 'Wilfred))), ((('Grace' ,'Harlow'))), ((('Elizabeth', 'Van Stephen'))), ((('Craig', 'Filip'))), ((('Alice', 'Howard'))), ((('Christopher', 'Paulsen'))), ((('William', 'Chong')), (('Matthew', 'Chong'))), ((('Jessica', 'Harris'))))

格式是這樣的:外部方括號定義集體學生,內部方括號定義瞳孔組,使用方括號定義年份,然后內部方括號定義單個學生。

抱歉,如果我做錯了,還不是很清楚。 如果有什么需要澄清的內容,請讓我知道,我會做的。

目前,我已經嘗試了SELECT first_name, surname from pupils GROUP BY pupil_group, year ORDER BY pupil_group, year ASC但是它並沒有將它們合並成組或按照我的SELECT first_name, surname from pupils GROUP BY pupil_group, year ORDER BY pupil_group, year ASC排序。

謝謝。

編輯:我剛剛意識到我的year列是varchar(2) ,所以也許無法對其進行排序,因為它包含數字。 我想我改成一個int

EDIT2:我將year更新為int 我現在已經嘗試按以下建議SELECT first_name, surname, year, pupil_group FROM pupils ORDER BY pupil_group ASC, year ASC, surname ASC (添加了yearpupil_group以使其更易於理解),但這返回(('Jonathan', 'Morris', 9, 'Apollo'), ('Amber', 'Wilfred', 9, 'Artemis'), ('Grace', 'Harlow', 9, 'Athena'), ('Elizabeth', 'Van Stephen', 9, 'Demeter'), ('Jessica', 'Harris', 10, 'Demeter'), ('Craig', 'Filip', 9, 'Hades'), ('Alice', 'Howard', 9, 'Hera'), ('Christopher', 'Paulsen', 9, 'Hermes'), ('William', 'Chong', 9, 'Poseidon'), ('Matthew', 'Chong', 10, 'Poseidon')) 雖然確實可以正確排序,但它們都沒有按照我的描述進行分組。

我認為您只是很難闡明ORDER BY子句:

SELECT First_Name, Surname, Pupil_Group, Year
FROM pupils
ORDER BY pupil_group DESC, year, Surname DESC;

這會將所有記錄放在同一學生組中。 然后,在每個這樣的組中,記錄將按年份升序排列,然后按姓氏降序排列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM