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

SQL按相同ID分组方法及偶数ID城市查询报错排查

1. 如何在SQL中对拥有相同Id编号的数据进行分组?
  • 在SQL中,使用GROUP BY子句即可对相同Id的数据进行分组,只需将Id作为分组字段。
  • 若需要对分组后的数据做统计计算,可搭配聚合函数(如COUNT()、SUM()、AVG()等)使用。
  • 示例:
-- 统计每个Id对应的数据条数
SELECT Id, COUNT(*) AS data_count
FROM your_table
GROUP BY Id;
2. SQL语句报错排查及修正

需求回顾

从STATION表中查询ID为偶数的城市名称列表,结果需排除重复值,展示顺序不限。

原语句问题分析

你编写的SQL存在两个核心问题:

  1. 逻辑不符合需求:如果Id是表的主键(通常主键具有唯一性),GROUP BY Id, CITY, STATE会将每一条ID为偶数的数据单独分组,完全起不到去重城市的作用;即使Id不唯一,分组字段包含Id也会导致相同城市但不同Id的数据被分成不同组,无法实现去重目标。
  2. 冗余字段查询:需求仅要求返回城市名称,原语句却额外查询了STATE字段,属于不必要的操作。

修正后的SQL语句

方式一:使用DISTINCT直接去重(推荐,逻辑更清晰)

SELECT DISTINCT CITY
FROM STATION
WHERE ID % 2 = 0;

若需要同时返回对应的STATE字段并对CITY+STATE组合去重,可改为:

SELECT DISTINCT CITY, STATE
FROM STATION
WHERE ID % 2 = 0;

方式二:使用GROUP BY分组去重

如果想用GROUP BY实现去重,需将分组字段改为你要去重的目标字段(而非Id):

SELECT CITY
FROM STATION
WHERE ID % 2 = 0
GROUP BY CITY;

同理,需要同时返回STATE的话:

SELECT CITY, STATE
FROM STATION
WHERE ID % 2 = 0
GROUP BY CITY, STATE;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 00:06:25