如何对多列应用SQL的DISTINCT关键字?
SQL去重查询问题解答
你给出的SQL写法是错误的,SQL语法不允许在每个字段前单独添加DISTINCT关键字——DISTINCT是作用于整个查询的字段组合的,而非单个字段。
正确写法分两种场景:
场景1:获取所有代理与订单金额的唯一组合
如果只是想去除agent_name和order_amount的重复组合(包含所有代理的记录),正确SQL如下:
SELECT DISTINCT agent_name, order_amount FROM your_table_name;
执行后会返回所有不重复的代理-金额组合,结果为:
| agent_name | order_amount |
|---|---|
| Justin | 500 |
| Justin | 1000 |
| Pablo | 750 |
| Dinesh | 500 |
场景2:仅获取Justin的唯一金额组合
如果你的需求是只返回Justin的[500, 1000]两个组合,需要添加WHERE条件过滤代理名称:
SELECT DISTINCT agent_name, order_amount FROM your_table_name WHERE agent_name = 'Justin';
这个查询的结果完全符合你的要求:
| agent_name | order_amount |
|---|---|
| Justin | 500 |
| Justin | 1000 |
补充说明:DISTINCT会自动对指定的所有字段组合进行去重,只要字段值的组合完全相同,就会被合并为一行,无需给每个字段单独标记DISTINCT。
内容的提问来源于stack exchange,提问作者Katsu
相关产品推荐
相关产品推荐

