SQL unterscheidet sich für 2 Felder in einer Datenbank


84

Können Sie die unterschiedliche Kombination von 2 verschiedenen Feldern in einer Datenbanktabelle erhalten? Wenn ja, können Sie das SQL-Beispiel bereitstellen.

Antworten:


128

Wie wäre es einfach:

select distinct c1, c2 from t

oder

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

Abhängig von den Daten ist die Gruppierung nach langsamer als eindeutig
Noizer

5
Für diejenigen, die Operand should contain 1 column(s)Fehler sehen, besteht Ihr Problem darin, dass Sie dies wahrscheinlich tun select distinct(c1, c2) from tund hier keine Klammern zulässig sind. So bin ich hierher gekommen.
BookOfGreg

16

Wenn Sie unterschiedliche Werte von nur zwei Feldern wünschen und andere Felder mit diesen zurückgeben möchten, müssen die anderen Felder eine Art Aggregation aufweisen (Summe, Min, Max usw.), und die beiden Spalten, die Sie unterscheiden möchten, müssen in angezeigt werden die group by-Klausel. Ansonsten ist es genau so, wie Decker sagt.


7

Sie können das Ergebnis durch zwei Spalten unterscheiden, die unter SQL verwendet werden:

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

4

Wenn Sie immer noch nur nach einer Spalte gruppieren möchten (wie ich wollte), können Sie die Abfrage verschachteln:

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

3

Teile meinen dummen Gedanken:

Vielleicht kann ich nur auf c1, aber nicht auf c2 unterscheiden, also kann die Syntax sein, select ([distinct] col)+wo distinctein Qualifikator für jede Spalte ist.

Aber nach dem Nachdenken finde ich, dass es Unsinn ist, nur in einer Spalte zu unterscheiden . Nehmen Sie die folgende Beziehung:

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

Wenn wir select (distinct A), B, was ist dann das richtige Bfür A = 1?

Somit distinctist ein Qualifier für a statement.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.