使用 Access 2010。
如果我有一张 table
COL1
A
B
A
C
A
运行查询后,我会在 COL2 中得到输出,其中“A”重复三次,并且其 COL2 值依次递增。
COL1 | COL2
A | 1
B | 1
A | 2
C | 1
A | 3
最佳答案
向表中添加一个字段。选择“自动编号”作为其数据类型,并将其设为表的主键。我将该字段命名为 ID,因此我的示例数据版本如下所示...
ID COL1
1 A
2 B
3 A
4 C
5 A
下面的 SELECT
语句返回此结果集...
ID COL1 COL2a COL2b
1 A 1 1
2 B 1 1
3 A 2 2
4 C 1 1
5 A 3 3
COL2a 和 COL2b 显示了实现相同结果的 2 种方法。 DCount是特定于 Access 的,并且需要在 m.COL1
文本值周围加上引号。第二种方法,COL2b,使用相关子查询,因此如果您选择,可以在不同的数据库中工作。通过这种方法,您无需费心引用文本值。
这两种方法基本上都需要数据库引擎对结果集的每一行运行额外的查询。因此,对于一个巨大的表,性能将成为一个问题。索引会有所帮助。如果还没有索引,请在 COL1
上添加索引。 ID
已经有索引,因为它是主键。
如果您无法添加字段,并且该表尚未包含另一个合适的字段,那么我认为您运气不好。您将无法通过 Access 查询获得所需的信息。
SELECT
m.ID,
m.COL1,
DCount(
"*",
"MyTable",
"COL1 = '" & m.COL1 & "' AND ID <= " & m.ID
) AS COL2a,
(
SELECT Count(*)
FROM MyTable AS m2
WHERE m2.COL1 = m.COL1 AND m2.ID <= m.ID
) AS COL2b
FROM MyTable2 AS m
ORDER BY m.ID;
关于sql - 计算并增加该记录的重复实例数的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18401710/