Функция ELT выбирает одно из полей по его номеру (нумерация полей с единицы).

Номер поля задается первым параметром, а остальными параметрами задаются имена полей. Выглядит это примерно так: ELT(номер, поле1, поле2, поле2). Если, к примеру, вместо номера передать 1 - то выберется значение поля1, если 2 - значение поля2, если 3 - значение поля 3.

Вместо полей могут быть строки или числа, например, так: ELT(номер, 'строка1', 2, 'строка3'). Можно также комбинировать строки, числа и поля: ELT(номер, 'строка1', 2, поле1).

Если номер меньше, чем 1 или больше, чем число полей, возвращается NULL.

См. также функцию FIELD, которое выбирает поле по его содержимому.

См. также функцию GREATEST, которая находит максимальное из значений.

См. также функцию LEAST, которая находит минимальное из значений.

Синтаксис

SELECT ELT(число, поле1, поле2...) FROM имя_таблицы WHERE условие

Примеры

Все примеры будут по этой таблице texts, если не сказано иное:

id
айди
field1
поле1
field2
поле2
field3
поле3
1 поле1 поле2 поле3
2 поле1 поле2 поле3
3 поле1 поле2 поле3

Пример

В данном примере с помощью ELT выбирается содержимое первого поля:

SELECT number, ELT(1, field1, field2, field3) as elt FROM texts

SQL запрос выберет следующие строки:

id
айди
elt
поле
1 поле1
2 поле1
3 поле1

Пример

В данном примере с помощью ELT выбирается содержимое второго поля:

SELECT number, ELT(2, field1, field2, field3) as elt FROM texts

SQL запрос выберет следующие строки:

id
айди
elt
поле
1 поле2
2 поле2
3 поле2

Пример

В данном примере с помощью ELT выбирается содержимое третьего поля:

SELECT number, ELT(3, field1, field2, field3) as elt FROM texts

SQL запрос выберет следующие строки:

id
айди
elt
поле
1 поле3
2 поле3
3 поле3

Меняем таблицу для примеров

Остальные примеры будут по этой таблице texts:

id
айди
number
число
field1
поле1
field2
поле2
field2
поле2
1 3 поле1 поле2 поле3
2 2 поле1 поле2 поле3
3 1 поле1 поле2 поле3

Пример

В данном примере с помощью ELT выбирается содержимое поля, номер которого задан полем number:

SELECT number, ELT(number, field1, field2, field3) as elt FROM texts

SQL запрос выберет следующие строки:

id
айди
number
число
elt
поле
1 3 поле3
2 2 поле2
3 1 поле1

Меняем таблицу для примеров

Остальные примеры будут по этой таблице users:

id
айди
name
имя
date
дата рождения
1 Дима 1988-03-01
2 Петя 1989-04-02
3 Вася 1990-05-03

Пример

В данном примере с помощью ELT и функции DAYOFWEEK выводится день недели по-русски:

SELECT *, ELT(DAYOFWEEK(date), 'вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб') as day FROM users

SQL запрос выберет следующие строки:

id
айди
name
имя
date
дата рождения
day
день недели
1 Дима 1988-03-01 вт
2 Петя 1989-04-02 вс
3 Вася 1990-05-03 чт