如何通过单条SQL查询关联两表获取最高最低气温及对应测量地点
原查询错误原因
- 你同时给
MIN(temperature)和MAX(temperature)设置了相同的别名temperature,字段命名冲突,数据库无法正确返回结果 - 没有分组的情况下使用聚合函数会将所有观测数据合并为单行返回,返回的
location_name是随机匹配的,和最高/最低气温没有对应关系
正确查询语句
直接用UNION ALL分别拼接最低温、最高温的查询结果,返回的两行数据刚好适配你的PHP输出逻辑,无需修改现有PHP代码:
(SELECT l.location_name, o.temperature FROM observation o INNER JOIN location l ON o.ref_location = l.location_id ORDER BY o.temperature ASC LIMIT 1) UNION ALL (SELECT l.location_name, o.temperature FROM observation o INNER JOIN location l ON o.ref_location = l.location_id ORDER BY o.temperature DESC LIMIT 1)
结果说明
查询会返回两行数据:第一行是最低气温及对应地点,第二行是最高气温及对应地点,每行都包含location_name和temperature两个字段,和你的PHP循环读取逻辑完全匹配。
内容的提问来源于stack exchange,提问作者McDreamyh
相关产品推荐
相关产品推荐

