Bạn có thể sử dụng UNION để lấy bản ghi trước đó và tiếp theo trong MySQL.
Cú pháp như sau
(select * from yourTableName WHERE yourIdColumnName> yourValue ORDER BYyourIdColumnName ASC LIMIT 1) UNION (chọn * từ yourTableName WHERE yourIdColumnNameĐể hiểu khái niệm này, chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau mysql> tạo bảng trướcAndNextRecordDemo -> (-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Tên varchar (30) ->); Truy vấn OK, 0 hàng bị ảnh hưởng (1,04 giây)Chèn một số bản ghi vào bảng bằng lệnh chèn.
Truy vấn như sau
mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('John'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,17 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Sam'); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,15 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Carol'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,14 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Bob'); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,17 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Larry'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,20 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('David'); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,14 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Ramit'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,12 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Maxwell'); Truy vấn OK, 1 hàng bị ảnh hưởng ( 0,15 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Mike'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,14 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Robert'); Truy vấn OK, 1 r cú ảnh hưởng (0,19 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Chris'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,10 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('James'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,16 giây) mysql> chèn vào giá trị trướcAndNextRecordDemo (Tên) ('Jace'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,15 giây)Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.
Truy vấn như sau
mysql> select * from beforeAndNextRecordDemo;Sau đây là kết quả
+ ---- + --------- + | Id | Tên | + ---- + --------- + | 1 | John || 2 | Sam || 3 | Carol || 4 | Bob || 5 | Larry || 6 | David || 7 | Ramit || 8 | Maxwell || 9 | Mike || 10 | Robert || 11 | Chris || 12 | James || 13 | Jace | + ---- + --------- + 13 hàng trong bộ (0,00 giây)Đây là truy vấn để lấy bản ghi trước đó và tiếp theo bằng cách sử dụng một truy vấn duy nhất với UNION
mysql> (select * from beforeAndNextRecordDemo WHERE Id> 8 ORDER BY Id ASC LIMIT 1) -> UNION -> (select * from beforeAndNextRecordDemo WHERE Id <8 ORDER BY Id DESC LIMIT 1);Sau đây là kết quả
+ ---- + ------- + | Id | Tên | + ---- + ------- + | 9 | Mike || 7 | Ramit | + ---- + ------- + 2 hàng trong bộ (0,03 giây)