Возвращает имя столбца для минимального значения из той же строки в SQL

Я хочу получить минимальное значение и соответствующее имя столбца из таблицы с той же строкой. См. запрос для получения минимального значения:

SELECT least(supplier1,supplier2,supplier3,supplier4,supplier5) AS minValue 
FROM 
priceTable  
WHERE partno='OL0003';

Приведенное выше дает 20. Теперь я хочу выбрать 20 и имя столбца, которое в данном случае — Supplier1. Какой запрос мне нужно добавить или есть код рефакторинга, который может помочь сделать это сразу. Я использую mysqlВозвращает имя столбца для минимального значения из той же строки в SQL

@fms Third: я хочу отобразить имя поля и минимальное значение

David Mukoro 09.04.2019 13:25
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
468
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

После этого вам нужно выражение case:

SELECT least(supplier1, supplier2, supplier3, supplier4, supplier5) AS minValue,
        (CASE least(supplier1, supplier2, supplier3, supplier4, supplier5)
              WHEN supplier1 THEN 'supplier1'
              WHEN supplier2 THEN 'supplier2'
              WHEN supplier3 THEN 'supplier3'
              WHEN supplier4 THEN 'supplier4'
              WHEN supplier5 THEN 'supplier5'
         END) as column_name_for_min
FROM priceTable  
WHERE partno = 'OL0003';

Это было бы намного проще, если бы вы лучше структурировали свои данные. У вас должна получиться таблица PartSuppliers с одной строкой на деталь и на поставщика.

Затем вы можете получить наименьшее значение различными способами, например:

select ps.*
from partsuppliers ps
where ps.cost = (select min(ps2.cost)
                 from partsuppliers ps2
                 where ps2.partno = ps.partno
                );

Другие вопросы по теме