首页 > 解决方案 > 一个表中的最小值和最大值以及另一个表中的另一个值

问题描述

我有几张表,里面有一些数据。我的任务是找到观察到的最高和最低温度以及它们的测量位置(通过一个查询)。

我的桌子:

地点

| location_id | location_name |
| --------    | --------------|
| 1           | New York      |
| 2           | Chicago       |
| 3           | Los Angeles   |
| 4           | San Francisco |

观察

| observation_id | ref_location |temperature|
| --------       | ------------ | -----     |
| 1              | 1            |20.0       |
| 2              | 2            |18.0       |
| 3              | 3            |3.0        |

如您所见, location_id 和 ref_location 必须相互链接

这就是我的答案应该是什么样子。

if(!empty($result))
{
    echo "<table>";
    while($row = mysqli_fetch_array($result))
    {
        echo "<tr>
                <td>".$row['location_name']."</td>
                <td>".$row['temperature']."</td>
            </tr>";
    }
    echo "</table>";
}

目前我的查询如下所示:

SELECT MIN(observation.temperature) AS temperature,
        MAX(observation.temperature) AS temperature, 
        location_name AS location_name 
FROM observation 
    INNER JOIN location ON observation.ref_location=location.location_id;

标签: phpmysql

解决方案


一种方法是获取温度最大值和最小值 id 并在 where 条件下使用它尝试:

SELECT location_name,temperature
FROM observation o
INNER JOIN location l ON o.ref_location=l.location_id
WHERE temperature IN (
                         SELECT MIN(temperature) from observation
                         union
                         SELECT MAX(temperature) from observation
                     ) ;

演示:https ://www.db-fiddle.com/f/vwi9bkdUVPoZeURdNAEoDX/7


推荐阅读