我有一个包含两列(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。
答案 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)
给予
124 | 0 125 | 0 123 | 1 314 | 1 948 | 1