SQL Server:检索列中的重复值

31

如何使用SQL语法过滤出列中的重复值?

谢谢。

5个回答

65

虽然不确定你的意图,但如果你想要忽略重复值,那么可以列出唯一值:

SELECT col 
FROM table
GROUP BY col 
HAVING (COUNT(col) =1 )

如果你只想过滤掉重复项,保留它们

SELECT col, COUNT(col) AS dup_count
FROM table
GROUP BY col
HAVING (COUNT(col) > 1) 

2009年,我以www.mximize.com/how-to-find-duplicate-values-in-a-table-为基础进行了操作;但现在(2014年)该网站已经不存在了。


3

使用DISTINCT或GROUP BY子句。

Select DISTINCT City from TableName

OR

Select City from TableName GROUP BY City

2
根据您所说的“filter”的含义,您可以使用DISTINCT或者GROUP BY,这两种方法都可用于删除或分组重复条目。请查看链接以获取更多信息。上面是来自DISTINCT链接的片段。
SELECT DISTINCT od.productid
FROM [order details] OD

SELECT od.productid
FROM [order details] OD
GROUP BY od.productid

这两者通常会产生相同的输出结果。


1
您要求列出重复项的列表。这里是一种简单的方法,使用 except 运算符 (SQL 2008+)。
  select [column] from Table1 

    except

  select distinct [column] from Table1; 

或者,您可以使用标准的SQL


select [column] from Table1 

where [column} not in 

     (select distinct [column} from Table1);

0

distinct 是用于过滤重复项的关键字。 也许您可以解释一下您想要实现什么?


抱歉问题不够明确。我的“真实意图”是选择行,其中的条件取决于一列中的“重复值”。 - Ricky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接