SQL odrębny dla 2 pól w bazie danych


84

Czy możesz uzyskać wyraźną kombinację 2 różnych pól w tabeli bazy danych? jeśli tak, czy możesz podać przykład SQL.

Odpowiedzi:


128

A może po prostu:

select distinct c1, c2 from t

lub

select c1, c2, count(*)
from t
group by c1, c2

W zależności od danych, grupowanie według jest wolniejsze niż wyraźne
noizer,

5
Dla tych, którzy widzą Operand should contain 1 column(s)błąd, twój problem polega na tym, że prawdopodobnie to robisz select distinct(c1, c2) from ti nie możesz tutaj używać nawiasów. Tak się tu dostałem.
BookOfGreg

16

Jeśli chcesz mieć różne wartości tylko z dwóch pól, a także zwrócić z nimi inne pola, to inne pola muszą mieć jakąś agregację (suma, min, maksimum itp.), A dwie kolumny, które chcesz odrębne, muszą pojawić się klauzula group by. W przeciwnym razie jest tak, jak mówi Decker.


7

Możesz uzyskać wynik odrębny za pomocą dwóch kolumn, używając poniżej SQL:

SELECT COUNT(*) FROM (SELECT DISTINCT c1, c2 FROM [TableEntity]) TE

5

Jeśli nadal chcesz grupować tylko według jednej kolumny (tak jak chciałem), możesz zagnieździć zapytanie:

select c1, count(*) from (select distinct c1, c2 from t) group by c1

3

Podziel się moją głupią myślą:

Może mogę wybrać inny tylko na c1, ale nie na c2, więc składnia może być select ([distinct] col)+gdzie distinctjest kwalifikatorem dla każdej kolumny.

Ale po namyśle stwierdzam, że wyróżnienie tylko jednej kolumny jest nonsensem . Weźmy następujący związek:

   | A | B
__________
  1| 1 | 2
  2| 1 | 1

Jeśli mamy select (distinct A), B, to co jest właściwe Bdla A = 1?

Tak więc distinctjest kwalifikatorem dla statement.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.