我有这种类型的表:
A.code A.name
1. X
2. Y
3. X
4. Z
5. Y
我需要编写一个查询,为我提供所有重复的名称:
A.name
X
Y
Z
不使用" group by"。
答案 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
这假设代码是唯一的;)。