我有一个具有两列(ID和活动)的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
如果ID具有不同的有效值,则会得到重复的ID。我需要查询以获取唯一的ID及其关联的工作表值。它将返回以下内容:
ID | Active
------------
124 | 0
125 | 0
314 | 1
948 | 1
我需要将它们放入两个不同的表中并进行外部联接吗?有效仅是0或1。
使用此:
SELECT *
FROM table1
WHERE Id IN (SELECT Id FROM table1 GROUP BY Id HAVING COUNT(Id)=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
如果您要为活动的最后一个值:
SELECT ID, Last(table1.Active) as Active FROM table1 GROUP BY ID;
那会让你:
ID | Active
------------
123 | 1
124 | 0
125 | 0
314 | 1
948 | 1
尝试从表1中选择SELECT ID ID,Max(ACTIVE)]
给予