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.

leora
źródło

Odpowiedzi:

128

A może po prostu:

select distinct c1, c2 from t

lub

select c1, c2, count(*)
from t
group by c1, c2
Howard Pinsley
źródło
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.

Jeffrey L Whitledge
źródło
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
Wilson Wu
źródło
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
Denno
źródło
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.

youkaichao
źródło