2015-02-11 94 views
0

如何從mysql行中獲取下一個最高數字,給定一行id。如何從mysql行中獲取下一個最高數字,給定一行id

例如,

Categories | sort_order 

    Animal | 400 
    Cars | 500 
> 
    Vans | 550 

現在我想添加在汽車類別,超過麪包車,我要檢查下一個是什麼後500

所以,當我加400應該返回500,當500應該retrun 550號最高

+0

你問501或550? – jarlh 2015-02-11 15:25:37

+0

550必須是,所以從501 - 549的一切都可以自由添加。 – flakerimi 2015-02-11 15:27:23

+0

我會補充說,如果你打算'Vans'是'Cars'的子類別,那麼根據這兩個類別的排序順序是不好的數據庫設計。使用自引用表可能會更好。 – 2015-02-11 22:43:13

回答

2

應儘量簡單,如下:

SELECT MIN(sort_order) FROM mytable 
WHERE sort_order > 500; 
+0

還是NULL結果 – flakerimi 2015-02-11 15:35:17

+0

現在好了!嘗試了一些不同的數字。 – flakerimi 2015-02-11 15:38:09

+0

@Flakerim在SQL中,如果set函數中的任何數據爲null,則整個結果爲null。因此,您有一些行的sort_order = null,因此您需要清理數據以在該字段中沒有空值,或者使用'...和sort_order IS NOT NULL「在WHERE子句中過濾這些行, – 2015-02-11 22:09:13

0
select min(sort_order) + 1 from tablename where sort_order >= 500 

未經測試,但應該有效。

+0

我在SQL中得到空值 – flakerimi 2015-02-11 15:31:56

+0

@Flakerim,如果set函數中的任何數據爲空,則整個結果爲空。因此,您有一些行的sort_order = null,因此您需要清理數據以在該字段中沒有空值,或者使用'...和sort_order IS NOT NULL「在WHERE子句中過濾這些行, – 2015-02-11 22:07:39

+0

順便說一句,這個給你501 – flakerimi 2015-02-12 15:39:45

相關問題