2015-02-11 65 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