sql - SQL中如何查找重复记录?

标签 sql sql-server tsql sql-server-2008 duplicates

我正在尝试开发一个查询来插入唯一记录,但由于尝试插入重复记录而收到 SQL Server 主键错误。我能够使用此查询插入一些值,但不能插入此记录(score_14)。

所以现在我尝试使用以下查询查找重复记录。挑战在于我的 PK 基于 3 列:StudentID、MeasureDate 和 MeasureID - 所有这些都来自下面未提及的不同表。

但这只显示计数 - 相反,我只想返回计数 > 1 的记录。我该怎么做?

select count(a.score_14) as score_count, A.studentid, A.measuredate, B.measurename+' ' +B.LabelName 
from [J5C_Measures_Sys] A
join [J5C_ListBoxMeasures_Sys] B on A.MeasureID = B.MeasureID 
join sysobjects so on so.name = 'J5C_Measures_Sys' 
join syscolumns sc on so.id = sc.id 
join [J5C_MeasureNamesV2_Sys] v on v.Score_field_id = sc.name
where so.type = 'u' and sc.name = 'score_14' and a.score_14 is not null 
AND A.STUDENTID IS NOT NULL AND A.MEASUREDATE IS NOT NULL AND B.MEASURENAME IS NOT NULL
--and count(a.score_14)>1
group by a.studentid, a.measuredate, B.measurename, B.LabelName, A.score_14
having count(a.score_14) > 1

最佳答案

贝丝是正确的 - 这是我对您的查询的重写:

SELECT a.studentid, a.measuredate, a.measureid
  from [J5C_Measures_Sys] A
GROUP BY a.studentid, a.measuredate, a.measureid
  HAVING COUNT(*) > 1

以前:

SELECT a.studentid, a.measuredate, a.measureid
  from [J5C_Measures_Sys] A
  join [J5C_ListBoxMeasures_Sys] B on A.MeasureID = B.MeasureID 
  join sysobjects so on so.name = 'J5C_Measures_Sys'
                    AND so.type = 'u'
  join syscolumns sc on so.id = sc.id 
                    and sc.name = 'score_14' 
  join [J5C_MeasureNamesV2_Sys] v on v.Score_field_id = sc.name
 where a.score_14 is not null  
   AND B.MEASURENAME IS NOT NULL
GROUP BY a.studentid, a.measuredate, a.measureid
  HAVING COUNT(*) > 1

关于sql - SQL中如何查找重复记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3535012/

相关文章:

c# - 使用一个文本框和多个参数将 SQL 数据库过滤到 DataGridView

mysql - 欢乐连接 PID-2

c# - 如何在 Gridview 中进行数据绑定(bind)?

tsql - 将函数从 Access SQL 转换为 T-SQL 2005

sql - 查找标志处于事件状态的时间间隔

sql-server - 来自 pyodbc 的 sql 打印语句

sql - SQL中有没有更有效的方法返回最大空间交集的记录?

mysql - 在 select 语句中使用存储过程的结果 [MySql]

java - 不同方法中的类似 SQL 查询

sql - 删除 SQL 中字段中子字符串后面的字符