首页 > 解决方案 > MySQL 最大值和最小值解释

问题描述

我的问题是有人解释这是如何工作的。我在 ItPrice 列中得到了 MAX 和 MIN。另一位学生向我展示了这行得通,但无法真正解释发生了什么。我知道联合只是重复相同的代码,将 > 符号翻转以返回最小值而不是最大值,所以我只需要一半的演练。这是问题:

编写查询以列出与最高和最低行程价格相关联的 Triptype。

select  triptype.tid, triptype.tname, it1.itprice
    from triptype, custitinerary it1
    where triptype.tid = it1.tid 
    and it1.itprice > ALL
        (select itprice from custitinerary it2 
        where it1.ItPrice != it2.Itprice)
Union
select  triptype.tid, triptype.tname, it1.itprice
    from triptype, custitinerary it1
    where triptype.tid = it1.tid 
    and it1.itprice < ALL
        (select itprice from custitinerary it2 
        where it1.ItPrice != it2.Itprice);

这是此代码的结果

标签: mysqlmaxunionmin

解决方案


我无法理解提供的 sql。但是您的问题的解决方案可能如下:

我将假设您有以下表格:

行程类型表:

id,
tripType

行程表:

id,
itineraryPrice,
tripType_id,

然后,您获取与行程价格相关的最高和​​最低 tripTypes 的查询可以计算如下:

首先查询得到最高的tripType

SELECT tripType.id, tripType.name, MAX(itinerary.itineraryPrice) as 'price'
FROM tripType, itinerary
WHERE itinerary.tripType_id = tripType.id

这将导致以下行:

------------------------------
| id   | name    | price     |
|------|---------|-----------|
| 42   | Sports  | 16000.00  |
------------------------------

其次查询获取最低tripType

SELECT tripType.id, tripType.name, MIN(itinerary.itineraryPrice) as 'price'
FROM tripType, itinerary
WHERE itinerary.tripType_id = tripType.id

这将导致以下行:

--------------------------------
| id   | name      | price     |
|------|-----------|-----------|
| 11   |Adventure  | 2000.00   |
--------------------------------

最后一步

使用 UNION 将两行(查询)组合成一个结果:

SELECT tripType.id, tripType.name, MAX(itinerary.itineraryPrice) as 'price'
FROM tripType, itinerary
WHERE itinerary.tripType_id = tripType.id
UNION
SELECT tripType.id, tripType.name, MIN(itinerary.itineraryPrice) as 'price'
FROM tripType, itinerary
WHERE itinerary.tripType_id = tripType.id

最后一步将为您提供最终结果,如下所示:

-------------------------------
| id   | name      | price     |
|------|-----------|-----------|
| 42   | Sports    | 16000.00  |
|------|-----------|-----------|
| 11   | Adventure | 2000.00   |
-------------------------------

推荐阅读