2014-10-05 5 views
8

Wie schreibe ich eine Abfrage, um nur festzustellen, dass eine Spalte Werte eindeutig sind?SQL-Abfrage, um festzustellen, dass Werte in Spalte eindeutig ist

+0

Möchten Sie feststellen, dass alle Werte eindeutig sind? – md4

+0

Ja, es ist mehr von entweder alle Spalten sind einzigartig oder nicht – JackyBoi

+0

Verwandte, wenn nicht gleich: http://stackoverflow.com/questions/6941049/how-to-find-out-whether-a-table-has- einige-einzigartige-Spalten –

Antwort

9

versuchen Sie dies:

select case when count(distinct col1)= count(col1) 
then 'column values are unique' else 'column values are NOT unique' end 
from tbl_name; 
+2

Das funktioniert, wenn Sie annehmen, dass keine Werte "NULL" sind. –

0

Versuchen Sie, nur bestimmte Werte einer Spalte zurückzugeben? Wenn ja, können Sie das Schlüsselwort DISTINCT verwenden. Die Syntax ist:

SELECT DISTINCT column_name,column_name 
FROM table_name; 
+0

Nicht wirklich zurück, nur bestimmen. Auch ich bin verwirrt, aber das ist das, was wollte daher gebeten, wissen, wie eine solche Abfrage schreiben – JackyBoi

+0

Sie so etwas wie verwenden können: Column1, Column2, COUNT (*) VON Tabelle GROUP SELECT BY Column1, Spalte2 HABEN COUNT (*)> 1 und wenn das, was zurückgegeben wird, irgendwelche Werte hat, sind diese Werte die nicht eindeutigen Werte. –

9
select count(distinct column_name), count(column_name) 
from table_name; 

Wenn die Anzahl der eindeutigen Werte gleich der gesamten Anzahl der Werte ist, dann müssen alle Werte eindeutig sind.

+2

+1. Ich möchte hinzufügen, dass diese Lösung doppelte 'NULL's nicht erkennt; Es funktioniert nur für (Nicht-NULL) Werte. – stakx

0

Verwenden Sie das Schlüsselwort DISTINCT in einer Funktion COUNT Aggregat wie folgt:

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name 

Die obige Abfrage Sie die Anzahl der unterschiedlichen Werte in dieser Spalte geben.

2

Wenn Sie diejenigen auflisten möchten, die nicht eindeutig sind, nehmen Sie einfach die innere Abfrage und führen Sie sie aus. HTH.

0

Wenn Sie alle überprüfen möchten, ob die Werte eindeutig sind und Sie kümmern sich um NULL Werte, tun dann so etwas wie dieses:

select (case when count(distinct column_name) = count(column_name) and 
        (count(column_name) = count(*) or count(column_name) = count(*) - 1) 
      then 'All Unique' 
      else 'Duplicates' 
     end) 
from table t; 
0

Damit folgt Query, Sie haben den Vorteil, nicht nur zu sehen, ob Ihre Spalten eindeutig sind, sondern Sie können auch sehen, welche Kombination am meisten nicht eindeutig ist. Da Sie immer noch die Frequenz 1 sehen, ist Ihr Schlüssel einzigartig. Sie wissen, dass Ihre Ergebnisse gut sind und nicht einfach fehlen. Etwas ist weniger klar, wenn eine HAVING-Klausel verwendet wird.

SELECT Col1, Col2, COUNT(*) AS Freq 
FROM Table 
GROUP BY Col1, Col2 
ORDER BY Freq DESC 
Verwandte Themen