sql - 为什么在使用 MIN 函数并选择另一列时,我们需要 GROUP BY 子句?MIN 不返回单个记录吗?
问题描述
我有两张桌子vehicles
和dealership_vehicles
. 该dealership_vehicles
表有一个价格列。该vehicles
表有一列dealership_vehicle_id
与表中的dealership_vehicles
id 列相关dealership_vehicles
。
我只想退回最便宜的汽车制造商。
为什么会出现以下查询:
select
vehicles.make,
MIN(dealership_vehicles.price)
from
vehicles inner join dealership_vehicles
on vehicles.dealership_vehicle_id=dealership_vehicles.id;
返回错误:
column "vehicles.make" must appear in the GROUP BY clause or be used in an aggregate function
由于 MIN 函数返回单个值,因此可以构造返回单个值而不需要 GROUP BY 的 SQL 查询是合理的。
解决方案
将“GROUP BY”一词视为“每个人”。它的意思是“给我每辆车的dealership_vehicles.price.make的最小值”
因此,您需要将查询更改为:
select
vehicles.make,
MIN(dealership_vehicles.price)
from
vehicles inner join dealership_vehicles
on vehicles.dealership_vehicle_id=dealership_vehicles.id
Group by vehicles.make;
推荐阅读
- c - 创建临时堆栈以在c中打印它
- javascript - jQuery验证禁用按钮,直到输入有效
- javascript - 当我单击“发布”时,Wordpress HTML 自定义标签不起作用
- node.js - 导出动态模块的正确方法
- python - Scrapy跳过网址
- c# - C# 提取 XML 段并插入 SQL
- optimization - 如何正确生成一个应该跳过一个数字的长流?
- list-comprehension - 从python中的嵌套列表中提取字典元素
- sql-server - 使用 ASP.NET Core 填充两个表数据
- angular - Stackblitz 向 JSONPlaceholder 发出 HTTP 请求,但不向 SWAPI