Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在access sql的两列中查找重复项_Sql_Ms Access - Fatal编程技术网

如何在access sql的两列中查找重复项

如何在access sql的两列中查找重复项,sql,ms-access,Sql,Ms Access,我有一张大桌子,里面有两万张唱片。我想找到类似的记录(BNO和BNO CSCcode列上的重复记录) 我想找回我喜欢的东西 CSCcode Description BNO BNO-CSCcode EID 05026 blah2 5431 5431-05026 1077 05026 blah3 5431 5431-05026 3011 07620

我有一张大桌子,里面有两万张唱片。我想找到类似的记录(BNO和BNO CSCcode列上的重复记录)

我想找回我喜欢的东西

    CSCcode   Description   BNO        BNO-CSCcode     EID

    05026     blah2        5431      5431-05026       1077
    05026     blah3        5431      5431-05026       3011
    07620     blah5        7560      7560-07620       7890
    07620     blah6        7560      7560-07620       8560
    01234    sampledesc    0009      0009-01234       1156
    01234    sampledesc8   0009      0009-01234       0023
如何在sql查询中指定它

使用具有:

  select field1,field2,field3, count(*)
  from table_name
  group by field1,field2,field3
  having count(*) > 1
select *
from mytable 
where bno & bno_csccode in
(
  select bno & bno_csccode
  from mytable
  group by bno, bno_csccode
  having count(*) > 1
);

您必须在查询中使用
EXISTS
命令

这将提供所需的重新过滤:

SELECT *
FROM TableName t0
WHERE EXISTS (
    SELECT 1
    FROM TableName t1
    WHERE t0.BNO = t1.BNO AND t0.BNOCSC = t1.BNOCSC
    GROUP BY BNO, BNOCSC
    HAVING count(*) > 1
    )

存在
用于一列或多列之间的比较

这是一个开始,但是OP需要一个连接到源表的子查询的结果来获取他需要的数据。在MS Access中有一个向导来完成这项工作(查找重复项向导)是的,我试过了。但我想知道,在20000多张唱片中,它只检索到4张唱片。我想我用的那个向导可能是错的。我该怎么用呢。t2或t1是什么?我只有一个表它们是表的别名很抱歉,我的访问进入无响应模式,试图从任务管理器关闭。有什么原因吗?缺乏耐心?;-)由于串联,无法使用索引。这可能会减慢速度。bno代码中是否始终包含bno?然后只需选择csccode,即仅选择bno_csccode而不是bno&bno_csccode。
select *
from mytable 
where bno & bno_csccode in
(
  select bno & bno_csccode
  from mytable
  group by bno, bno_csccode
  having count(*) > 1
);
SELECT *
FROM TableName t0
WHERE EXISTS (
    SELECT 1
    FROM TableName t1
    WHERE t0.BNO = t1.BNO AND t0.BNOCSC = t1.BNOCSC
    GROUP BY BNO, BNOCSC
    HAVING count(*) > 1
    )