2013-04-13 208 views
0

我的问题是有关一个选择,我想订购由ASC和DESC字段,看一下例子:订购最高和最低

我有表的产品,我要订购的场所谓的价格,所以,我知道我能做到这一点:

SELECT Price FROM Products ORDER BY Price ASC. 

但我想看到的最高价和最低价,为最高的,我知道我能做到:

SELECT Price FROM Products ORDER BY Price ASC limit 1; 

那么,如何我可以选择最高值和最低值,机器人h在1选择?

我也想要选择具有最高价值的产品的名称和具有最低价值的产品。

问候。

+0

你只是想价格或整排设有此价格是多少?你将如何打破关系(多行共享最低/最高)?挑一个任意一个?返回所有同龄人? –

回答

2

这将显示所有产品的最高价或最低价:

SELECT Products.* 
FROM Products 
WHERE Price = (SELECT MAX(Price) FROM Products) 
     OR Price = (SELECT MIN(Price) FROM Products) 

或者,也许你想是这样的:

SELECT 
    Products.*, 
    m.mx As Highest, 
    m.mn As Lowest, 
    CASE WHEN Products.Price = m.mx THEN 'Max' ELSE 'Min' END As Is_Max_or_Min 
FROM 
    Products INNER JOIN (
    SELECT MAX(Price) mx, MIN(Price) mn 
    FROM Products 
) m ON Products.Price IN (m.mx, m.mn) 

如果您希望他们在同一排,如果只有一个产品价格最高,而最低价格只有一个产品,则可以使用如下所示:

SELECT 
    m.Lowest, p1.Name Name_Lowest, 
    m.Highest, p2.Name Name_Highest 
FROM 
    (SELECT MIN(Price) Lowest, MAX(Price) Highest FROM Products) m 
    INNER JOIN Products p1 ON m.Lowest = p1.Price 
    INNER JOIN Products p2 ON m.Highest = p2.Price 
LIMIT 1 

或者,如果你只是需要一些easyer,你可以这样做:

(SELECT 'Max' Is_Max_Or_Min, Products.* 
FROM Products ORDER BY Price DESC LIMIT 1) 
UNION ALL 
(SELECT 'Min', Products.* 
FROM Products ORDER BY Price LIMIT 1) 
+0

好的,...在一个选择?如果可能的话:) – Tennosuke

+0

@Tennosuke我已经更新了我的最后一个查询,我想这是你正在寻找的...请让我知道如果没关系:) – fthiella

+0

是如此艰难?有没有更简单的方法? – Tennosuke

0

SELECT Price FROM Products ORDER BY Price DESC limit 1; ??

+0

在1选择;) – Tennosuke

0

,如果你想看到两个最高和最低的价格,使用此查询:

select highest, lowest from 
(
SELECT Price as highest FROM Products ORDER BY Price DESC limit 1; 
SELECT Price as lowest FROM Products ORDER BY Price ASC limit 1; 
) t 
4

怎么样使用简单MINMAX聚合函数的

SELECT MAX(Price) as MaxPrice, MIN(Price) as MinPrice FROM Products 
+0

它的作品,谢谢! – Tennosuke

0

最简单的方法是:

SELECT MIN(Price) LowestPrice, MAX(Price) HighestPrice FROM Products 

但在某些情况下,您可能希望使用UNION声明:

(SELECT 'Lowest' type, Price FROM Products ORDER BY Price ASC LIMIT 1) 
UNION 
(SELECT 'Highest' type, Price FROM Products ORDER BY Price DESC LIMIT 1) 
+0

现在有点难度,除了价格,如果我想产品的名称最高和最低?你怎么看? – Tennosuke