2011-02-02 26 views
1

信息
*我有一個名爲「s_id」的INT PRIMARY KEY列的表。
*「s_id」的值是不連續的,即[3,5,7,8,9,11,12,14)。所以[1,2,4,6,10,13]不存在。當PRIMARY KEY值不連續時,如何獲取下一個SQL行?

問題
鑑於 「S_ID」 值 '5',什麼是拔 「S_ID」 值最簡單的SELECT語句 '7' 的先驗知識?

我的最新嘗試是哈克和任意 - 這裏的目的是如果存在任何行,我只是挑最前面的一個,並跳出:
SELECT s_id FROM s WHERE s_id > 5 AND s_id < (5+10)

編輯:對不起,我忘了提SQLITE3的限制,它不提供'TOP'。尼克和馬克提出的使用「TOP 1」的建議讓我朝着瞭解這一侷限的方向邁進,然後朝着「極限1」邁進了一步。我想通SQL是SQL,我應該但更好地稱爲:
SELECT s_id FROM s WHERE s_id > 5 LIMIT 1

回答

2

如何:

SELECT TOP 1 s_id 
FROM dbo.YourTable 
WHERE s_id > 5 
ORDER BY s_id 

選擇第一s_id值比5大 - 在你的案件7

+2

難道你沒有足夠的代表?分享簡單的;) – 2011-02-02 20:32:48

+0

謝謝。我忘了提及我正在使用「sqlite3」C庫,所以不幸的是TOP不可用。在聲明結尾處,我嘗試添加「限制1」,而不是「最高1」,而且效果很好。 – drhr 2011-02-02 20:36:32

+0

@liutenantdan:是的,這樣的信息在你原來的文章中會非常有用!請記住下次.. – 2011-02-02 20:37:18

2

select top 1 s_id from s where s_id > 5 order by s_id

1

SELECT s_id FROM s WHERE s_id > 5 ORDER BY s_id LIMIT 1; in MySQL terms

1

在英語中,您希望最小的s_id大於5.您可以在SQL中幾乎以這種方式編寫它。

select min(s_id) from yourtable where (s_id > 5); 
相關問題