Я ищу быстрый MySQL-запрос , который возвращает id продукта с наименьшим (min
) или самым высоким (max
) ценами по сравнению со всеми ценовыми категориями (a, b, c
и d
).SELECT id, где минимальное или максимальное значение из нескольких столбцов
У меня есть таблица продуктов chocolate_stock
с несколькими ценовыми категориями. Очень легко получить самую низкую (min
) или самую высокую (max
) цена, от указанной категории (a
или b
или c
или d
).
id | name | price_a | price_b | price_c | price_d |
--------------------------------------------------------------
1 | Chips Ahoy | 250 | 530 | 720 | 120
--------------------------------------------------------------
2 | Chocolate Chunk | 250 | 90 | 32.92 | 110
--------------------------------------------------------------
3 | Oreo | 103 | 44.52 | 250 | 850
--------------------------------------------------------------
Категория цен: decimal(10,2)
. Вот пример, который возвращает самую высокую цену из категорий, но не идентификатор:
$t = 'chocolate_stock';
$arrIds = array(1, 3);
$strQuery = "SELECT id,
MAX(price_a) AS price_a,
MAX(price_b) AS price_b,
MAX(price_c) AS price_c,
MAX(price_d) AS price_d
FROM $t WHERE id IN(". implode(',', array_map('intval', $arrIds)) .")";
Какой самый быстрый способ получить эту информацию?
Просто, чтобы быть в безопасности: вы ожидаете двух записей результатов; учитывая ваши данные примера и запрос, который будет включать все три элемента (т. е. без предложения WHERE): min = (id: 2, price_c: 32.92) и max = (id: 3, price_d: 850)? – VolkerK
Да, я знаю. Я могу ограничить их позже или изменить порядок результатов. – mate64
Каков ваш желаемый результат? В частности, что вы ожидаете от MAX Price_a, где максимальная цена равна 250, и есть две продукции с этой ценой? – GarethD