Как я могу найти столбец, который используется LEAST () в MySQL? - PullRequest
0 голосов
/ 05 октября 2019

Я получаю наименьшую цену из пяти столбцов, используя эту функцию в mysql:

field1: 9
field2: 10
field3: 6
field4: 15
field5: 55

select least(field1,field2,field3,field4,field5) as smallest from myTable;

Таким образом, мой результат будет "6" (взят из поля 3). Но я хочу знать имя столбца, который имеет наименьшее значение. Так что я ожидаю "field3" как результат.

Я пробовал «назад», поэтому я мог попробовать каждый столбец, если «6» - правильное значение. Это работает, но это кажется нелепым планом, потому что в моем реальном приложении у меня есть 24 столбца для проверки. Есть хорошие идеи?

Как примечание: НЕВОЗМОЖНО изменить структуру таблиц ... Я должен работать с одной таблицей, содержащей все цены в 24 различных столбцах.

Ответы [ 2 ]

2 голосов
/ 05 октября 2019

Вы можете использовать решение, подобное следующему:

SELECT LEAST(field1, field2, field3, field4, field5) AS smallest,
  ELT(FIELD(LEAST(field1, field2, field3, field4, field5), field1, field2, field3, field4, field5), 'field1', 'field2', 'field3', 'field4', 'field5') 
FROM myTable;

демо на dbfiddle.uk

0 голосов
/ 05 октября 2019

Это просто и легко читаемое выражение CASE:

case least(field1, field2, field3, field4, field5)
    when field1 then 'field1'
    when field2 then 'field2'
    when field3 then 'field3'
    when field4 then 'field4'
    when field5 then 'field5'
end
...