2014-10-30 442 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;