在mysql中,若要為每個分組生成序列號,可以使用用戶變量來實現。
SELECT @rownum := IF(@prev = column_to_group, @rownum + 1, 1) AS rank, column_to_group, other_columns FROM table_name, (SELECT @rownum := 0, @prev := NULL) r ORDER BY column_to_group, other_columns;
以上SQL語句中,@rownum和@prev都是用戶變量。首先在子查詢中對這兩個變量進行初始化,@rownum用于記錄序列號,@prev用于記錄上一次分組的列值。在主查詢中,先對@rownum進行判斷,若分組列值與上一次分組相同,則@rownum加1,否則重置為1。最后將這些變量以及其他需要的列都查詢出來,按照分組列值和其他列排序。
通過這種方式,就可以為每個分組生成序列號了,方便我們進行數據分析和統計。