[英]Using variables in SQL SELECT statements and its evaluation
SELECT (@row:=@row+1) AS ROW, ID
FROM table1 ,(SELECT @row := 0) r
order by ID desc
SQl 如何評價這個? 奇怪的是,SELECT 聲明中的變量似乎幾乎沒有關於這種類型的文獻。
對此有非常重要的“文獻” :
也可以在 SET 以外的語句中為用戶變量賦值。 (此功能在 MySQL 8.0 中已棄用,並可能在后續版本中刪除。)
換句話說,此代碼將在 MySQL 中的某個時間點停止工作。
做你想做的事情的正確方法是使用row_number()
:
SELECT ROW_NUMBER() OVER (ORDER BY ID DESC) AS ROW, ID
FROM table1
ORDER BY ID DESC;
了解 MySQL SELECT
語句中的變量分配的唯一原因是出於對歷史的好奇——或者如果您無法維護尚未遷移到 MySQL 8+ 的系統。
SELECT *
FROM table1 ,(SELECT @row := 0) r
order by ID desc
您將看到 table1 中的所有列以及表中始終為 0 的新列(沒有名稱)
@row:=@row+1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.