Kam*_*ami 0 sql t-sql sql-server
我想选择没有重复的ids 并保留行'5d'而不是'5e'在 select 语句中。
桌子
id | name
1 | a
2 | b
3 | c
5 | d
5 | e
Run Code Online (Sandbox Code Playgroud)
我试过:
SELECT id, name
FROM table t
INNER JOIN (SELECT DISTINCT id FROM table) t2 ON t.id = t2.id
Run Code Online (Sandbox Code Playgroud)
对于给定的示例,使用聚合min()可以工作。
SELECT id,
min(name) name
FROM table
GROUP BY id;
Run Code Online (Sandbox Code Playgroud)
您还可以使用ROW_NUMBER():
SELECT id, name
FROM (
SELECT id, name, ROW_NUMBER() OVER(PARTITION BY id ORDER BY name) rn
FROM mytable
) x
WHERE rn = 1
Run Code Online (Sandbox Code Playgroud)
这将保留具有最小的记录name(因此'5d'将出现在 之前'5e')。通过这种技术,您还可以在存在重复项的另一列上使用排序条件(聚合查询MIN()无法做到这一点)。此外,使用窗口函数的查询通常比等效的聚合查询执行得更好。
| 归档时间: |
|
| 查看次数: |
1815 次 |
| 最近记录: |