You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询筛选为何需同时匹配product_id与首次年份?求解析

为什么筛选时必须同时指定product_id?

我们需要编写SQL查询,选取每个产品首次销售年份的product_id、year、quantity、price,结果可按任意顺序返回。

用户的错误代码(仅在简单测试生效)

SELECT product_id, year AS first_year, quantity, price
FROM Sales
WHERE year IN (
SELECT MIN(year) as year
FROM Sales
GROUP BY product_id) ;

正确的查询语句

SELECT product_id, year AS first_year, quantity, price
FROM Sales
WHERE (product_id, year) IN (
SELECT product_id, MIN(year) as year
FROM Sales
GROUP BY product_id) ;

问题解答

你的错误写法里,子查询仅返回所有产品的首次年份集合(比如产品A首次是2020年、产品B首次是2021年,子查询结果就是[2020,2021])。外层查询会把所有年份属于这个集合的销售记录都筛选出来——这就可能包含产品B在2020年的销售记录(如果存在的话),但2020年并不是产品B的首次销售年份,最终结果自然出错。

SQL不会自动关联外层的product_id和子查询中的product_id,year IN (...)只是单一的年份匹配,无法确保年份属于对应产品的首次销售时间。只有使用(product_id, year)这种复合条件,才能让每条记录的产品ID和年份,精准匹配到子查询中该产品对应的首次年份组合,这样筛选出来的才是每个产品真正的首次销售记录。


内容的提问来源于stack exchange,提问作者mmmmmm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:31:04