LAST() 函數 可返回指定欄位中最後一筆記錄的值。但需特別注意:此函數僅支援 Microsoft Access,其他主流資料庫(SQL Server、MySQL、Oracle、PostgreSQL)均不支援原生 LAST() 函數。
SELECT LAST(column_name) FROM table_name;
由於 LAST() 非標準 SQL,不同資料庫需用對應語法實現相同功能:
SELECT TOP 1 column_name
FROM table_name
ORDER BY column_name DESC;
範例: 取得 Websites 表中 id 最大的網站名稱
SELECT TOP 1 name FROM Websites ORDER BY id DESC;
SELECT column_name
FROM table_name
ORDER BY column_name DESC
LIMIT 1;
範例:
SELECT name FROM Websites ORDER BY id DESC LIMIT 1;
SELECT column_name
FROM table_name
ORDER BY column_name DESC
WHERE ROWNUM <= 1;
範例:
SELECT name FROM Websites ORDER BY id DESC WHERE ROWNUM <= 1;
使用 Websites 表資料:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘寶 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鳥教程 | https://www.runoob.com/ | 4689 | CN | | 4 | 微博 | https://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 6 | 百度 | https://www.baidu.com/ | 4 | CN | | 7 | stackoverflow| https://stackoverflow.com/ | 0 | IND | +----+--------------+---------------------------+-------+---------+
SELECT name FROM Websites ORDER BY id DESC LIMIT 1;
返回 stackoverflow(id=7,為資料表中最後插入的記錄)。
ORDER BY 明確排序依據(通常用主鍵 id 或時間戳)| 資料庫 | 語法關鍵字 | 排序方向 | 限制筆數 |
|---|---|---|---|
| Access | LAST() | 隱含 | 內建 |
| SQL Server | TOP 1 | DESC | TOP 1 |
| MySQL/PG/SQLite | LIMIT 1 | DESC | LIMIT 1 |
| Oracle | ROWNUM | DESC | WHERE ROWNUM <= 1 |
建立通用的「取得最新記錄」函數/視圖,封裝資料庫差異,讓應用層程式碼保持資料庫無關性。