2009-07-05 84 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

相關問題