2013-07-24 2 views
2

Предположим, у меня есть простая таблица значений (почти как хранилище ключей/значений). В таблице есть первичный ключ, который индексируется и автоматически увеличивается. Например, вот несколько строк:Как выбрать первый первичный ключ с нечетным/четным номером в базе данных 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".

Также как я могу выбрать первый четный id?

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

+0

Помогло ли вам это, м8? – FSou1

ответ

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

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

+0

ОК, отлично, спасибо! – user2503552

2

Это даст вам все строки, имеющие даже идентификатор.

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

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

SELECT TOP 1 * 
FROM myTable 
ORDER BY ID 

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

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

Если вы используете SQL использования сервера TOP, если вы используете MySQL или Postgres используют Limit!

+0

В чем разница с моим ответом? – FSou1

+0

@ FSou1 Я очень медленно даю ответы, когда я начал, не было ответа ... –

+0

Большое спасибо! – user2503552