Как получить минимальное и максимальное значения и соответствующие идентификаторы в одной строке - PullRequest
0 голосов
/ 07 января 2019

У меня есть таблица с названием product с 3 полями:

prod_id  price  pname
1        100    abc
2        200    bbc
3        300    cbc

Я хочу получить данные о минимуме и максимуме в одной строке, т.е.

 minprice  prod_id1   maxprice   prod_id2
 100       1          300        3

Я пытался с помощью следующего запроса, но не смог найти точный результат (если у меня есть больше данных)

SELECT s1.prod_id as prod_id1, 
       s2.prod_id as prod_id2, 
       min(s1.price) as minprice,
       max(s2.price) as maxprice 
FROM product s1
INNER JOIN product s2 ON s1.prod_id = s2.prod_id

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Вы можете сделать это с помощью LIMIT:

SELECT
    pmin.price AS minprice, 
    pmin.prod_id AS minprice_prodid,
    pmax.price AS maxprice,
    pmax.prod_id AS maxprice_prodid
FROM (
    SELECT prod_id, price FROM product ORDER BY price LIMIT 1
) pmin
CROSS JOIN (
    SELECT prod_id, price FROM product ORDER BY price DESC LIMIT 1
) pmax
0 голосов
/ 07 января 2019
SELECT s1.prod_id as prod_id1, 
       s2.prod_id as prod_id2, 
       s1.price as maxprice,
       s2.price as minprice 
FROM products s1
INNER JOIN products s2 ON s1.price > s2.price
order by s1.price desc, s2.price asc
limit 1

Демо

0 голосов
/ 07 января 2019

Вы можете попробовать ниже -

select X.id as prod_id1, minprice, Y.id as prod_id2, maxprice
from
(
select id, price as minprice from tablename
where price =(select min(price) from tablename b)
)X cross join
(
select id, price as maxprice from tablename
where price =(select max(price) from tablename c)
)Y
...