2014-10-05 19 views
8

Sadece sütun değerlerinin benzersiz olduğunu belirlemek için bir sorgu nasıl yazılır?Sütundaki değerlerin benzersiz olduğunu belirlemek için SQL sorgusu

+0

_all_ değerlerinin benzersiz olduğunu belirlemeye mi çalışıyorsunuz? – md4

+0

Evet, sütunların tümü benzersiz ya da daha fazla değil – JackyBoi

+0

İlgili değil, aynıysa: http://stackoverflow.com/questions/6941049/how-to-find-out-whether-a-table-has- bazı benzersiz sütunlar –

cevap

9

bu deneyin: Bu aşağıdaki ile

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; 
+2

Bu, değerlerin "NULL" olmadığını varsayarsa çalışır. –

0

Yalnızca bir sütunun farklı değerlerini döndürmeye mi çalışıyorsunuz? Eğer öyleyse, DISTINCT anahtar sözcüğünü kullanabilirsiniz. sözdizimi: benzersiz değerlerin # değerlerin toplam # eşittir

SELECT DISTINCT column_name,column_name 
FROM table_name; 
+0

Gerçekten geri dönüş, sadece belirle. Sütun1'de, Sütun2 TARAFINDAN tablo TOPLULUĞU Sütun1, Sütun2, COUNT (*) SEÇ : Ben de karıştı, ama bu isteniyor nedir, dolayısıyla Sen gibi bir şey kullanabilirsiniz tür sorgu – JackyBoi

+0

yazma bilmek istedi HAVING COUNT (*)> 1 ve döndürülenin herhangi bir değeri varsa, bu değerler benzersiz olmayan değerlerdir. –

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

, o zaman tüm değerler benzersizdir. aşağıda gösterildiği gibi

+2

+1. Bu çözümün yinelenen 'NULL'ları algılamayacağını eklemek isterim; Sadece (non-'' '' '') değerler için çalışır. – stakx

0

bir COUNT toplama işlevi içinde DISTINCT anahtar kelime kullanın:

SELECT COUNT(DISTINCT column_name) AS some_alias FROM table_name 

Yukarıdaki sorgu o sütundaki size farklı değerlerin sayısını verecektir.

2
IF NOT EXISTS ( 
    SELECT 
    column_name 
    FROM 
    your_table 
    GROUP BY 
    column_name 
    HAVING 
    COUNT(*)>1 
) 
    PRINT 'All are unique' 
ELSE 
    PRINT 'Some are not unique' 

Benzersiz olmayanları listelemek isterseniz, yalnızca iç sorguyu alıp çalıştırın. HTH.

0

Eğer tüm değerler ve yaklaşık NULL değerleri bakım benzersiz olup olmadığını kontrol etmek istiyorsanız, o zaman böyle bir şey yapmak sorgu, yalnızca sütunlarınızın benzersiz olup olmadığını görmenin avantajına sahip değilsiniz, ancak hangi kombinasyonun benzersiz olmadığını da görebilirsiniz. Dahası, 1. frekansı hala gördüğünüz için anahtarınız benzersizdir, sonuçlarınızın iyi olduğunu ve örneğin eksik olmadığını bilirsiniz; HAVING yan tümcesi kullanırken bir şey daha az nettir.

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

:

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