2012-06-18 47 views
21

Tôi đang cố gắng chọn bản ghi cuối cùng từ một bảng trong MySQL bằng cách sử dụng PHP. Tôi tin rằng tôi có một lỗi SQL. Đây là mã SQL của tôi:TOP và ORDER BY lỗi sql

SELECT TOP 1 id FROM `table` ORDER BY id DESC 

Nếu điều này hợp lệ và tôi thực sự có lỗi PHP, hãy cho tôi biết.

Trả lời

43

bạn có cú pháp sql không hợp lệ. sử dụng LIMIT thay

thử điều này:

SELECT id 
FROM table 
ORDER BY id DESC 
LIMIT 1 

mệnh đề TOP hoạt động trên máy chủ MSSQL.

+0

này hoạt động tuyệt vời. Tôi đoán tôi không giỏi SQL ... – Markasoftware

+0

@Markasoftware: Không phải nếu bạn chuyển sang SQL Server. :) –

+1

@PeterMajeed bạn là chính xác. nhưng các op được gắn thẻ MySQL không MS :) –

9

Một cách tiếp cận đơn giản hơn và nhiều hơn nữa DBMS-agnostic sẽ là:

SELECT MAX(id) AS id 
FROM table 

Đó là chỉ khi bạn muốn chỉ lĩnh vực id, nếu không nếu bạn đã cố gắng để SELECT cột khác, nó sẽ không trở lại phù hợp với dữ liệu đến lĩnh vực id và bạn sẽ thay phải sử dụng:

SELECT id, otherfields, ..., ... 
FROM table 
WHERE id = (SELECT MAX(id) FROM table) 
+0

điều này cũng tốt :) –

+0

Điều này có vẻ tốt. – Markasoftware

0

này sẽ làm việc để tìm các bản ghi cuối cùng nếu bạn không muốn sử dụng giới hạn

SELECT TOP 1 FROM Products ORDER BY id desc 

khác

SELECT * FROM Products ORDER BY id DESC LIMIT 1 
Các vấn đề liên quan