SQL重复行选择而不使用"有"

时间:2015-11-16 20:16:32

标签: mysql sql distinct

我有这种类型的表:

A.code        A.name
   1.            X
   2.            Y
   3.            X
   4.            Z
   5.            Y

我需要编写一个查询,为我提供所有重复的名称:

 A.name
   X
   Y
   Z

不使用" group by"。

3 个答案:

答案 0 :(得分:1)

尝试使用DISTINCT作为列。请注意,在包含大量行的表中,这不是最佳性能选项。

SELECT DISTINCT A.Name FROM A 

答案 1 :(得分:1)

相关子查询是你的朋友。由于外部查询和子查询中使用的表别名,子查询将针对外部查询中引用的表中的每一行进行求值。

在子查询中,再次查询外部表而不使用别名来确定行是否符合条件。

SELECT DISTINCT name FROM Names AS CorrelatedNamesTable 
WHERE 
(
     SELECT COUNT(Name) FROM Names WHERE Name = CorrelatedNamesTable.Name
) > 1

答案 2 :(得分:0)

SELECT a1.name FROM A a1, A a2 WHERE a1.name=a2.name AND a1.code<>a2.code

这假设代码是唯一的;)。