If the ID is a primary key or has an index, you can find it directly:
Method One:
Query the SQL statement for the previous record (if you have additional query criteria, remember to add other_conditions to avoid unnecessary errors):
SELECT * from table_a WHERE id = (SELECT id from table_a where ID < {$id} [and Other_conditions ] ORDER BY id DESC limit 1) [and other_conditions];
Query the SQL statement for the next record (if you have additional query criteria remember to add other_conditions to avoid unnecessary errors):
SELECT * from table_a WHERE id = (SELECT id from table_a where ID > {$id} [and Other_conditions ] ORDER BY ID ASC limit 1) [and other_conditions];
Method Two:
Query the SQL statement for the previous record (if there are other query conditions remember to add other_conditions to avoid unnecessary errors))
SELECT * from table_a where id = (the Select max (ID) from table_a where ID < {$id} [and Other_conditions]) [and other_conditions];
Query the SQL statement for the next record (if you have additional query criteria remember to add other_conditions to avoid unnecessary errors):
SELECT * from table_a where id = (the select min (id) from table_a where ID > {$id} [and Other_condi tions]) [and other_conditions];
How to query the previous and next records of the current data in MySQL