2014-10-30 443 views
0

我想返回唯一的表中的所有行。即如果两行中的某个字段包含相同的名称,则不应显示该名称。使用SQL查找唯一行?

+3

请提供一些示例数据和您期望的输出。 – vyegorov 2014-10-30 15:05:06

回答

10

因为只需要在不重复的名称(而不是唯一行,每名一样,你可以有DISTINCT),你必须使用一个GROUP BYHAVING(而不是WHERE,因为你的参数是一个函数,而不是一个变量)的结果:

SELECT name FROM myTable GROUP BY name HAVING COUNT(name) = 1 
+0

为什么不能DISTINCT - 它慢吗? – i486 2014-10-31 09:10:06

+0

因为“distinct”会为每个名称返回一个唯一的行,而不仅仅是唯一名称。 – Veve 2014-10-31 09:12:01

+0

行,理解。我没有注意到这个细节。 – i486 2014-10-31 10:55:49

0

SELECT DISTINCT列名FROM表

0

如果你想完全,然后用row_number()distinct on

select distinct on (name) t.* 
from table t 
order by name;