在 MySQL 中為查詢結果動態生成遞增序號,無需應用層處理,單條 SQL 即可實現:
SELECT (@rowNO := @rowNO + 1) AS rowno, field1, field2, field3
FROM (
SELECT field1, field2, field3
FROM table_name
WHERE field3 = '2012-04-21'
) a,
(SELECT @rowNO := 0) b;
@rowNO = 0。@rowNO,形成連續行號。FROM 子句中,SELECT 列表中引用才生效。ROW_NUMBER() OVER (),語義更清晰、效能更穩定。PARTITION BY 使用窗口函數。SELECT ROW_NUMBER() OVER () AS rowno, field1, field2, field3
FROM table_name
WHERE field3 = '2012-04-21';