sql server distinct top
时间: 2025-01-06 09:38:27 浏览: 3
### 使用 `DISTINCT` 和 `TOP` 关键字
在 SQL Server 中,可以组合使用 `DISTINCT` 和 `TOP` 来获取唯一记录中的前几条数据。这种查询方式有助于减少结果集的大小并提高性能。
#### 查询结构
当希望返回唯一的前 N 行时,语法如下:
```sql
SELECT TOP (N) DISTINCT column_name(s)
FROM table_name;
```
这里的 `(N)` 是要检索的最大行数;如果省略括号,则默认解释为整数值而非表达式[^1]。
对于更复杂的场景,比如基于某些条件筛选后再应用这两个操作符,可以在子查询中先执行过滤逻辑再进行去重和取顶处理。例如:
```sql
SELECT TOP 5 DISTINCT ProductID, SupplierID
FROM (
SELECT *
FROM Products p
WHERE CategoryID = 1
) AS SubQueryAlias;
```
此语句会从类别 ID 为 1 的产品列表里选出不同的供应商编号与商品编号组合,并只显示其中最前面五个配对项。
相关问题
SQL server 统计语句
1. SELECT COUNT(*) FROM table_name; -- 统计表中所有行数
2. SELECT COUNT(column_name) FROM table_name; -- 统计表中特定列的非空值数量
3. SELECT SUM(column_name) FROM table_name; -- 计算表中特定列的总和
4. SELECT AVG(column_name) FROM table_name; -- 计算表中特定列的平均值
5. SELECT MAX(column_name) FROM table_name; -- 找出表中特定列的最大值
6. SELECT MIN(column_name) FROM table_name; -- 找出表中特定列的最小值
7. SELECT COUNT(DISTINCT column_name) FROM table_name; -- 统计表中特定列的不同值数量
8. SELECT TOP 10 column_name FROM table_name ORDER BY column_name DESC; -- 找出表中特定列的前十大值
9. SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name; -- 按照特定列进行分组统计
10. SELECT column_name, AVG(column_name2) FROM table_name GROUP BY column_name; -- 按照特定列进行分组计算平均值
阅读全文