Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.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
Sql 查找重复出现相同两列值的行_Sql_Sql Server - Fatal编程技术网

Sql 查找重复出现相同两列值的行

Sql 查找重复出现相同两列值的行,sql,sql-server,Sql,Sql Server,给定SQL Server中的一个表,如: Id INTEGER A VARCHAR(50) B VARCHAR(50) -- Some other columns 在A或B上没有索引的情况下,我希望找到A和B的唯一组合多次出现的行 我正在使用查询 SELECT A+B, Count(A+B) FROM MyTable GROUP BY A+B HAVING COUNT(A+B) > 1 第一个问题 有没有更省时的方法?(我无法向数据库添加索引) 第二个问题 当我试图通过在串联中包含

给定SQL Server中的一个表,如:

Id INTEGER
A  VARCHAR(50)
B  VARCHAR(50)
-- Some other columns
在A或B上没有索引的情况下,我希望找到A和B的唯一组合多次出现的行

我正在使用查询

SELECT A+B, Count(A+B) FROM MyTable
GROUP BY A+B
HAVING COUNT(A+B) > 1
第一个问题

有没有更省时的方法?(我无法向数据库添加索引)

第二个问题

当我试图通过在串联中包含
来获得输出的某些格式时:

SELECT A+','+B, Count(A+','+B) FROM MyTable
GROUP BY A+','+B
HAVING COUNT(A+','+B) > 1
查询失败,出现错误

Column 'MyDB.dbo.MyTable.A' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause
B列也有类似的错误


如何格式化输出以分隔两列?

对我来说,写以下内容似乎更自然:

SELECT A, B, Count(*) FROM MyTable
GROUP BY A, B
HAVING COUNT(*) > 1
这是最有效的方法(问题中的查询也是如此)

与上述查询类似,您可以重写第二个查询:

SELECT A + ',' + B, Count(*) FROM MyTable
GROUP BY A, B
HAVING COUNT(*) > 1

对我来说,写下以下内容似乎更自然:

SELECT A, B, Count(*) FROM MyTable
GROUP BY A, B
HAVING COUNT(*) > 1
这是最有效的方法(问题中的查询也是如此)

与上述查询类似,您可以重写第二个查询:

SELECT A + ',' + B, Count(*) FROM MyTable
GROUP BY A, B
HAVING COUNT(*) > 1

这么简单准确,这么简单准确。