访问 - 选择只有一列不同的不同记录

时间:2010-03-04 00:35:19

标签: select ms-access-2007 unique

我有一个包含两列(ID和Active)的Access表,其数据如下:

ID  |  Active
------------
123 | 0
124 | 0
125 | 0
123 | 1
314 | 1
948 | 1

我想选择具有唯一ID的不同记录(仅存在一次,而不仅仅是第一次存在),但我还需要Active值。如果我做了

SELECT DISTINCT ID from table1

我获得了唯一的ID,但没有获得工作表。它还返回123,它在表中不是唯一的。如果我这样做:

SELECT DISTINCT * from table1

如果它们具有不同的Active值,我会获得重复的ID。我需要一个查询来获取唯一ID及其相关的Sheet值。它将返回以下内容:

ID  |  Active
------------
124 | 0
125 | 0
314 | 1
948 | 1

我是否需要将这些表放入两个不同的表并进行外连接?有效只有0或1。

3 个答案:

答案 0 :(得分:7)

使用此:

SELECT *
FROM table1
WHERE Id IN (SELECT Id FROM table1 GROUP BY Id HAVING COUNT(Id)=1)

答案 1 :(得分:1)

对于其他任何人,如果您希望为每个ID返回至少一条记录,则此后省略任何重复记录。如果您想要Active的第一个或最后一个结果,则类似于CesarGon的子查询的查询将起作用:

SELECT ID, First(table1.Active) as Active FROM table1 GROUP BY ID;

这会让你想要你想要的东西:

ID  |  Active
------------
123 | 0
124 | 0
125 | 0
314 | 1
948 | 1

如果您想要Active的最后一个值:

    SELECT ID, Last(table1.Active) as Active FROM table1 GROUP BY ID;

那会得到你:

ID  |  Active
------------
123 | 1
124 | 0
125 | 0
314 | 1
948 | 1

答案 2 :(得分:0)

尝试 从表1中选择DISTINCT ID,Max(ACTIVE)

给予

ID |活性

124 | 0 125 | 0 123 | 1 314 | 1 948 | 1