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.