首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> SQL 基礎

SQL LAST() 函數詳解:Access 專屬與跨資料庫替代方案

     編輯:SQL 基礎

SQL LAST() 函數完整解析

LAST() 函數 可返回指定欄位中最後一筆記錄的值。但需特別注意:此函數僅支援 Microsoft Access,其他主流資料庫(SQL Server、MySQL、Oracle、PostgreSQL)均不支援原生 LAST() 函數。

Access 語法

SELECT LAST(column_name) FROM table_name;

跨資料庫替代方案

由於 LAST() 非標準 SQL,不同資料庫需用對應語法實現相同功能:

SQL Server (T-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;

MySQL / PostgreSQL / SQLite

SELECT column_name 
FROM table_name 
ORDER BY column_name DESC 
LIMIT 1;

範例:

SELECT name FROM Websites ORDER BY id DESC LIMIT 1;

Oracle

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,為資料表中最後插入的記錄)。

LAST() 替代方案執行結果

關鍵注意事項

  • 「最後一筆」定義模糊:資料表無固有順序,必須配合 ORDER BY 明確排序依據(通常用主鍵 id 或時間戳)
  • 效能考量:大表查詢時,確保排序欄位有索引,避免全表掃描
  • 並發環境:高併發寫入時,「最後一筆」可能瞬息萬變,需考慮交易隔離級別
  • 標準化建議:新專案優先使用標準 SQL 寫法(ORDER BY + LIMIT/TOP),避免資料庫綁定

對比總結表

資料庫語法關鍵字排序方向限制筆數
AccessLAST()隱含內建
SQL ServerTOP 1DESCTOP 1
MySQL/PG/SQLiteLIMIT 1DESCLIMIT 1
OracleROWNUMDESCWHERE ROWNUM <= 1

最佳實踐建議

建立通用的「取得最新記錄」函數/視圖,封裝資料庫差異,讓應用層程式碼保持資料庫無關性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved