2011-06-08 37 views
2

我怎麼做,我想更高的下一個最低的號碼,然後一定數量的查詢一個最低編號

因此,例如,如果我有數據,如在ID STEP_NUMBER

1 
3 
4 
5 
6 

如果我只是希望下一個最高的數字高於1 ......但我不知道他們每次都會變化的數字。我只知道我需要比數字更高的下一個最低數字。因此,在這種情況下,我想3返回

select step_number from system_step_product where step_number > 1 
order by step_number asc limit 1; 

這個工作,但有沒有更好的辦法

回答

3

您的解決方案可能是最高效的,但另一種解決方案,將在其他數據庫的工作將是:

SELECT MIN(step_number) 
FROM system_step_product 
WHERE step_number > 1 

索引的列也可能是一個好主意。

+1

呵呵,你快46秒了:) – 2011-06-08 19:26:53

2

我不認爲有一個更好的辦法;這是一個非常有效的方法。

另外,你是否有理由尋找更好的方法?引用Knuth,

「不成熟的優化是所有邪惡的根源。」

+0

這不是一個很好的答案。這可以通過選擇所有的ORDERED升序,並將數字限制爲1,同時使用偏移1. – 2011-06-08 19:22:18

+0

@tomasz:因爲它可以這樣做並不意味着這是一個更好的方法。另請注意編輯/引用。 – 2011-06-08 19:23:19

2

這也適用於:

SELECT MIN(step_number) 
FROM system_step_product 
WHERE step_number > 1