2012-05-08 34 views
9

Tôi đang cố gắng tạo thanh "mục tiêu" về cơ bản. Mục tiêu được xác định bằng cách lấy mục nhập cuối cùng mà tôi đã thực hiện trong bảng MySQL. Tôi muốn nhận được ID của mục nhập cuối cùng.Tìm mục nhập cuối cùng trong bảng MySQL

Làm cách nào để có được mục nhập cuối cùng trong bảng và sau đó lấy id từ mục nhập cuối cùng đó?

(Sử dụng PHP)

+0

Bạn có trường tăng tự động, chẳng hạn như 'id'? –

+0

Bạn cần ghi lại dấu thời gian để chắc chắn rằng bạn đang nhận được mục nhập gần đây nhất. –

+0

@MichaelMior, Tuyệt đối không! Dấu thời gian không có bất kỳ nơi nào gần độ phân giải để đảm bảo điều này. – Brad

Trả lời

25

Để có được id lớn nhất:

SELECT MAX(id) FROM mytable 

Sau đó, để có được hàng:

SELECT * FROM mytable WHERE id = ??? 

Hoặc bạn có thể thực hiện tất cả trong một truy vấn:

SELECT * FROM mytable ORDER BY id DESC LIMIT 1 
+0

Cảm ơn! Tôi nghĩ rằng những người khác đã làm cho nó phức tạp hơn một chút sau đó nó cần phải được. Tôi đoán câu hỏi của tôi có thể tốt hơn. Tôi chỉ cần một id lớn nhất. Cảm ơn! – ComputerLocus

2

nếu lĩnh vực này là tự động tăng lên thì bạn có thể sử dụng LAST_INSERT_ID

+0

Điều này giả định bạn vừa chèn hàng. –

6

bạn có thể sử dụng truy vấn này để có được những kết quả mong muốn với truy vấn sql này được sử dụng trong ví dụ này:

$sql = "SELECT user_id FROM my_users_table ORDER BY user_id DESC LIMIT 0,1"; 
+0

Cảm ơn, nhưng tôi sẽ sử dụng Eric, mặc dù điều này có thể sẽ hoạt động! – ComputerLocus

+0

Tốt thôi, bạn đời. Tôi hy vọng chủ đề này đã giải quyết vấn đề của bạn đúng cách =) – dotTutorials

2

Để làm điều này đáng tin cậy, bạn phải có một số lĩnh vực trong bảng mà bạn có thể kiểm tra để xác định cái nào là cuối cùng. Đây có thể là dấu thời gian khi bạn thêm bản ghi, số thứ tự liên tục tăng (đặc biệt là số thứ tự tăng dần), v.v.

Sau đó, giả sử đó là số thứ tự được gọi là "rec_seq". Bạn sẽ viết một cái gì đó như:

select * from my_table 
where rec_seq=(select max(rec_seq) from my_table) 
+0

Trông giống như câu trả lời của Eric nhưng tôi sẽ phải trả lời câu trả lời của Eric! – ComputerLocus

+0

Không vấn đề gì, hơi đơn giản hơn, đó là giải pháp dễ dàng hơn. – Jay

7

bạn có thể sử dụng chức năng LAST_INSERT_ID(). Ví dụ:

$sql = "SELECT * FROM mytable WHERE id = LAST_INSERT_ID()"; 
+0

Cảm ơn, mặc dù tôi sẽ sử dụng một trong những Eric trả lời là nhưng, điều này có vẻ như nó sẽ làm việc là tốt! – ComputerLocus

+3

lưu ý về LAST_INSERT_ID: LAST_INSERT_ID cung cấp id của hàng cuối cùng được chèn bởi kết nối hiện tại, chứ không phải các kết nối khác. – laltin

2

chọn tất cả các lĩnh vực từ bảng theo thứ tự ngược và đặt giới hạn 0,1 này sẽ cung cấp cho bạn kết quả cuối cùng của dữ liệu thực địa bàn

2

Lấy entry mới nhất của một người sử dụng

'SELECT user_id FROM table_name WHERE user_id = '.$userid.' ORDER BY user_id DESC LIMIT 1'; 
Các vấn đề liên quan