SQL选择列中的唯一值

SQL选择列中的唯一值,sql,sql-server,Sql,Sql Server,我有一张这样的桌子: ID CatID Filename 1 1 abc 2 2 abc 3 3 cat 4 2 dog 5 1 dog 我想做的是每个文件名只获取一个ID。我不在乎我得到了什么,第一个还是最后一个。我该怎么做呢 SELECT MIN(ID), FileName FROM YourTable GROUP BY FileName 将为每个文件名获取第一个ID -- Will get y

我有一张这样的桌子:

ID  CatID  Filename
 1    1      abc
 2    2      abc
 3    3      cat
 4    2      dog
 5    1      dog
我想做的是每个文件名只获取一个ID。我不在乎我得到了什么,第一个还是最后一个。我该怎么做呢

SELECT MIN(ID), FileName
FROM YourTable
GROUP BY FileName
将为每个文件名获取第一个ID

-- Will get you the min
SELECT MIN(ID), FileName
FROM table
GROUP BY FileName

-- Will get you the max
SELECT MAX(ID), FileName
FROM table
GROUP BY FileName


将为每个文件名获取第一个ID

从技术上讲,它不一定是第一个;-)您确定这将从I/O个人获取“first”ID吗?取决于first的定义-假设ID是一个标识列,它将是第一个:)SQL server first中没有first()函数,而第一个函数是由SQL server自动分配的标识列创建的:)“假设ID是一个标识列,它将是第一个”-仅当聚集索引位于ID上时,通常情况下是这样,但有时不应该这样。从技术上讲,它不一定是第一个;-)您确定这将从I/O个人获取“first”ID吗?取决于first的定义-假设ID是一个标识列,它将是第一个:)SQL server first中没有first()函数,而第一个函数是由SQL server自动分配的标识列创建的:)“假设ID是一个标识列,它将是第一个”-仅当聚集索引位于ID上时(通常是这样),但有时不应位于ID上。在“我的SQL Server 2005”框中:选择第一个(ID)会导致Msg 195,级别15,状态10,第1行“first”不是可识别的内置函数名。哪些DBMS支持“first()”和“LAST()'这些不是'MIN()'和'MAX()'的同义词吗?如果不是同义词,那么'FIRST()'和'MIN()'之间的区别是什么,或者'LAST()'和'MAX()'之间的区别是什么?在SQL 2003中,FIRST不是聚合函数;它是一个关键字,但它出现在深度优先搜索和广度优先搜索中,并首先获取和空值。LAST只出现在最后两个上下文中。FWIW:我在MySQL上搜索了一个可能的位置-我发现有人从MS Access迁移到MySQL时,对MySQL中没有FIRST感到困惑。Oracle、MS Access、MySQL默认情况下为我的SQL Server 2005框中未分组的select中的每一列实现FIRST():select FIRST(id)结果在Msg 195第15级状态10第1行“first”不是可识别的内置函数名。哪些数据库管理系统支持“first()”和“LAST()”,这些数据库管理系统不是“MIN()”和“MAX()”的同义词吗?如果不是同义词,“first()”和“MIN()”,或者“LAST()”和“MAX()”之间的区别是什么,第一个不是聚合函数;它是一个关键字,但它出现在深度优先搜索和广度优先搜索中,并首先获取和空值。LAST只出现在最后两个上下文中。FWIW:我在MySQL上搜索了一个可能的位置-我发现有人从MS Access迁移,但对MySQL中缺少FIRST感到困惑。Oracle、MS Access、MySQL默认为select中未分组的每一列实现FIRST(),那么也许你不应该在查询中包含id。你可以同时进行投票并接受答案。如果你不在乎你得到的是哪个id,那么也许你不应该在查询中包含id。你可以同时进行投票并接受答案
-- Will get you the min
SELECT MIN(ID), FileName
FROM table
GROUP BY FileName

-- Will get you the max
SELECT MAX(ID), FileName
FROM table
GROUP BY FileName