2013-08-10 1 views
0

Возможно ли получить строку базы данных на основе индекса приведенного списка?SQL извлекает первый из назначенных списков

У меня есть таблица, позволяющая назвать ее «хранилищем». Хранилище может содержать в себе всевозможные строковые значения. В приведенном ниже списке представлен возможный список значений в хранилище. Я не знаю, присутствуют ли в таблице. Но я хочу, чтобы выбрать первое найденное значение в зависимости от того, в списке данного

Список:

  1. Foo
  2. бар
  3. Foobar
  4. barfoo
  5. уф

1.Foo и 2.bar не существует, но 3.foobar есть. 3. foobar - это тот, который я хочу получить.

Надеюсь, я достаточно ясен в своем вопросе.

Заранее спасибо.

+2

«Надеюсь, я достаточно ясен в своем вопросе». Well ... no;) –

+1

Возможно, вам стоит отредактировать свой вопрос, чтобы быть более точным относительно словаря: database ≠ table ≠ lists ≠ rows –

+0

@SylvainLeroux См. Edit – John

ответ

1
select col 
from your_table 
where col in('foo','bar','foobar') 
order by field(col, 'foo','bar','foobar') 
limit 1 

Функция FIELD() возвращает индекс значения в списке.

+1

У вас действительно должна быть какая-то сверхдержава. Я не говорю о вашем мастерстве SQL, но о вашей способности * понять * каждый вопрос в мгновение ока: D –

+0

@ juergen-d Это похоже на работу! :) Не могли бы вы рассказать мне, что на самом деле делает «порядок по полю (столбец и т. Д.)»? – John

+1

@John Я позволил отредактировать ответ Юргена, чтобы предоставить ссылку на документ 'FIELD()'. Как вы увидите, это точная функция *, которая вам нужна! –