Benzersiz Seç ve Farklı Seç arasındaki fark


146

Bunların eşzamanlı olduğunu düşündüm, ancak Microsoft SQL'de aşağıdakileri yazdım:

Select Unique col from 
     (select col from table1 union select col from table2) alias

Ve başarısız oldu. Olarak değiştiriliyor

Select Distinct col from 
     (select col from table1 union select col from table2) alias

onu düzeltti. Biri açıklayabilir mi?

Yanıtlar:


169

SELECT UNIQUEOracle'ın SQL tadıyla desteklenen eski sözdizimidir. İle eş anlamlıdır SELECT DISTINCT.

SELECT DISTINCTBunun standart SQL olduğu ve standart olmadığı için kullanın SELECT UNIQUEve Oracle dışındaki veritabanı markalarında SELECT UNIQUEhiç tanınmayabilir.


113

Benzersiz, Tablo Oluştur () yönergesinde, bir alanın benzersiz veriler içereceğini belirtmek için kullanılan ve genellikle doğal anahtarlar, yabancı anahtarlar vb. İçin kullanılan bir anahtar kelimedir.

Örneğin:

Create Table Employee(   
    Emp_PKey Int Identity(1, 1) Constraint PK_Employee_Emp_PKey Primary Key,  
    Emp_SSN Numeric Not Null Unique,  
    Emp_FName varchar(16),   
    Emp_LName varchar(16) 
)

Örneğin, birisinin Sosyal Güvenlik Numarası tablonuzda muhtemelen benzersiz bir alan olacaktır, ancak birincil anahtar olması gerekmez.

Distinct, Select deyiminde, yalnızca bir alan benzersiz olmayabilecek verileri içerdiğinde döndürülen benzersiz öğelerin döndürülmesini istediğinizi sorguya bildirmek için kullanılır.

Select Distinct Emp_LName
From Employee

Aynı soyadına sahip birçok çalışanınız olabilir, ancak yalnızca her birinin farklı soyadını istiyorsunuz.

Açıktır ki, sorguladığınız alan benzersiz veriler içeriyorsa , Distinct anahtar sözcüğü gereksiz hale gelir.


2
Sosyal güvenlik numaralarının benzersiz olmasını isteyebilirsiniz, ancak bunlar değildir. Örneğin: dailyfinance.com/2010/08/12/…
aij

18

benzersiz seç, yapmaya çalıştığınız şey için geçerli sözdizimi değil

ya farklı seçmek ya da farklı bir hareket seçmek istiyorsanız

Ve aslında, yapmaya çalıştığınız şeyde farklı / farklı bir bilgiye ihtiyacınız bile yok. Uygun birleşim ifadesi parametrelerini seçerek yinelemeleri ortadan kaldırabilirsiniz.

aşağıdaki sorgu tek başına yalnızca farklı değerler sağlayacaktır

select col from table1 
union 
select col from table2

Eğer kopya isteseydin, yapmak zorundaydın

select col from table1 
union all
select col from table2

1
Yanılmıyorsam, Oracle select unique..., standartlara göre yapmayı tercih etsem de söylemenize izin veriyor .
asgs

3

Yalnızca Oracle'da =>

SELECT DISTINCTve SELECT UNIQUEaynı şekilde davranın. DISTINCT, ANSI SQL standardı iken, UNIQUE, Oracle'a özgü bir ifadedir.

Diğer veritabanlarında (sizin durumunuzdaki sql-server gibi) =>

SELECT UNIQUEgeçersiz sözdizimidir. UNIQUE, sütuna benzersiz kısıtlama eklemek için anahtar kelimedir.

DISTINCT SEÇ


0
  1. Eşsiz eski sözdizimiydi, Distinct ise artık Standart sql olan yeni sözdizimiydi.
  2. Unique , eklenecek tüm değerlerin diğerlerinden farklı olması gerektiğine dair bir kısıt oluşturur. Yinelenen bir değer girilmeye çalışılırsa bir hataya tanık olunabilir. Farklı sonuçlar, verileri alırken yinelenen satırların kaldırılmasıyla sonuçlanır.
  3. Örnek: Öğrenciden DISTINCT isimlerini SEÇİN ;

    TABLO OLUŞTUR Kişiler (Kimlik varchar NOT NULL UNIQUE , Name varchar (20));

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.