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

发布于 2024-08-23 13:01:02 字数 598 浏览 6 评论 0原文

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

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

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

SELECT DISTINCT ID from table1

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

SELECT DISTINCT * from table1

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

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

我是否需要将它们放入两个不同的表中并进行外连接? Active 只能是 0 或 1。

I have an Access table with two columns (ID and Active) with data like the following:

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

I want to select the distinct records that have a unique ID (that only exist once, not just the first time they exist), but I also need the Active value. If I do a

SELECT DISTINCT ID from table1

I get the unique IDs, but not the sheet. It also returns 123 which isn't unique in the table. If I do:

SELECT DISTINCT * from table1

I get duplicate IDs if they have different Active values. I need a query to get the unique IDs and their associated Sheet value. It would return the following:

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

Do I need to put these into two different tables and do an outer join? Active is only ever 0 or 1.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无人接听 2024-08-30 13:01:02

使用这个:

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

Use this:

SELECT *
FROM table1
WHERE Id IN (SELECT Id FROM table1 GROUP BY Id HAVING COUNT(Id)=1)
平安喜乐 2024-08-30 13:01:02

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

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;

如果您想要 Active:这将得到您

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

For anyone else, if you want at least one record returned for each ID, omitting any duplicates thereafter. A query similar to CesarGon's subquery will work, provided you want the first or last result for Active:

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

That will get you want you want:

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

If you want the last value for Active:

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

That will get you:

ID  |  Active
------------
123 | 1
124 | 0
125 | 0
314 | 1
948 | 1
橘香 2024-08-30 13:01:02

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

给出

ID |活跃

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

Try
SELECT DISTINCT ID, Max(ACTIVE) from table1

To give

ID | Active

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文