2009-07-05 83 views

回答

16

你需要改变你的ORDER BY

SELECT * FROM table WHERE `id` > 1556 ORDER BY `id` ASC LIMIT 1 
UNION 
SELECT * FROM table WHERE `id` < 1556 ORDER BY `id` DESC LIMIT 1 

这确保了id场是按照正确的顺序取前顶部结果

您还可以使用MIN和MAX:

SELECT 
    * 
FROM 
    table 
WHERE 
    id = (SELECT MIN(id) FROM table where id > 1556) 
    OR id = (SELECT MAX(id) FROM table where id < 1556) 

需要注意的是,SELECT *不建议在产品代码中使用,因此请在您的SELECT声明中将您的列命名。

+1

感谢您的回答,我只添加*从懒惰写在这里的任何列,我确实有他们在实际的代码中命名:) – 2009-07-05 17:34:41

相关问题