Как выбрать первый нечетный/четный первичный ключ в базе данных SQL

Допустим, у меня есть простая таблица значений (почти как хранилище ключей/значений). В таблице есть первичный ключ, который индексируется и автоматически увеличивается. Например, вот несколько строк:

 [id]  [columnA]   [columnB]
  2     "data"    "more data"    
  3     "data"    "more data"    
  4     "data"    "more data"    
  7     "data"    "more data"
  8     "data"    "more data"
  11    "data"    "more data"

В таблице может быть более 1000 значений.

Допустим, я хочу выбрать строку, содержащую первый нечетный идентификатор в этой таблице. В этом случае он должен вернуть строку 3 "data" "more data".

Кроме того, как мне выбрать первый четный идентификатор?

Спасибо большое


person user2503552    schedule 24.07.2013    source источник
comment
Тебе помогает, м8?   -  person Maxim Zhukov    schedule 24.07.2013


Ответы (2)


select id
from table
where MOD(id, 2) = 1
order by id
limit 0, 1

Используйте математическую функцию 13 % 2 = 1 (извините, я не знаю, как это по-английски, разделить по модулю). Функция MySQL — это MOD.

person Maxim Zhukov    schedule 24.07.2013

Это даст вам все строки с четным идентификатором.

SELECT ID FROM table WHERE MOD(ID,2) = 0

И затем по этому результату вы можете использовать

SELECT TOP 1 *
FROM myTable
ORDER BY ID

И для нечетного вы можете использовать

SELECT ID FROM table WHERE MOD(ID,2) = 1

Если вы используете SQL Server, используйте TOP, если вы используете MySQL или Postgres, используйте Limit!

person Coffee_lover    schedule 24.07.2013
comment
Какая разница с моим ответом? - person Maxim Zhukov; 24.07.2013