Как получить следующую строку SQL, когда значения PRIMARY KEY не являются непрерывными? - PullRequest
1 голос
/ 02 февраля 2011

INFO
* У меня есть таблица со столбцом INT PRIMARY KEY с именем "s_id".
* Значения для "s_id" являются прерывистыми, то есть [3,5,7,8,9,11,12,14). Итак, [1,2,4,6,10,13] не существует.

ВОПРОС
Учитывая предварительное знание значения "s_id" '5', какой простейший оператор SELECT для получения значения "s_id" '7'?

Моя последняя попытка является хакерской и произвольной - цель здесь в том, чтобы, если бы существовали какие-либо строки, я бы просто выбрал самую первую и выпрыгнул: SELECT s_id FROM s WHERE s_id > 5 AND s_id < (5+10)

РЕДАКТИРОВАТЬ: Извините, я забыл упомянуть об ограничении SQLITE3, который не предлагает «TOP». Предложение Ника и Марка об использовании «TOP 1» подтолкнуло меня к тому, чтобы узнать об этом ограничении 1-й стороны, а затем к «LIMIT 1», что в итоге получилось прекрасно. Я подумал, что SQL - это SQL, но я должен был знать лучше:
SELECT s_id FROM s WHERE s_id > 5 LIMIT 1

Ответы [ 4 ]

2 голосов
/ 02 февраля 2011

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

2 голосов
/ 02 февраля 2011

Как насчет:

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

, который выбирает первое значение s_id больше 5 - в вашем случае 7.

1 голос
/ 07 февраля 2011

В английском языке вам нужен наименьший s_id, который больше 5. Вы можете написать это почти так же в SQL.

select min(s_id) from yourtable where (s_id > 5);
1 голос
/ 02 февраля 2011

SELECT s_id FROM s WHERE s_id > 5 ORDER BY s_id LIMIT 1; в терминах MySQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...