sql - 如何编写SQL查询以标识特定字段中的重复值?

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

这是我正在使用的表:

我只想标识对于不同参数具有重复扣除ID的ReviewID。

例如,在上图中,ReviewID 114具有两个不同的参数ID,但是两个记录都具有相同的推论ID。

就我而言,此记录(ReviewID 114)有一个错误。对于单个ReviewID,不应有两个或多个具有相同推论ID的唯一参数ID。

我想编写一个查询来识别这些记录类型,但是我的SQL技能还不存在。帮助?

谢谢!

更新1:如果可以,我正在使用TSQL(SQL Server 2008)
更新2:我要查找的输出将与上面的图像相同,减去与我描述的条件不匹配的所有记录。

干杯!

最佳答案

SELECT * FROM table t1 INNER JOIN (
    SELECT review_id, deduction_id FROM table
    GROUP BY review_id, deduction_id
    HAVING COUNT(parameter_id) > 1
) t2 ON t1.review_id = t2.review_id AND t1.deduction_id = t2.deduction_id;

http://www.sqlfiddle.com/#!3/d858f/3

如果可以有完全相同的副本并且没关系,则可以将HAVING子句修改为COUNT(DISTINCT parameter_id)。

关于sql - 如何编写SQL查询以标识特定字段中的重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374902/

相关文章:

sql - SQL Server 2005中如何检查是否存在尚未提交的事务?

SQL Merge Into 包含多个语句

mysql - SQL Server : Want to use between clause with dates, 但日期为字符串形式 (YYYY.MM.DD)

sql - 计算值为 1 的地方

sql - Microsoft Access 查询返回序号

mysql - 是否可以在不使用 create、alter、delete、drop 命令的情况下修改任何数据库的架构或实例?

sql - 索引字符串列以进行完整字符串比较的最佳方法

tsql - 按年份分区与名为 Data_2011、Data_2010 等的单独表

sql-server - 如何使用 SQL Server Management Studio 将所有存储过程从一个数据库传输到另一个数据库

sql - 查询不属于特定组的用户? (想使用EXCEPT,但MySQL似乎不支持)