it-swarm.com.de

SQL für 2 Felder in einer Datenbank

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

81
leora

Wie wäre es einfach:

select distinct c1, c2 from t

oder

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

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

15

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

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

Wenn Sie nach wie vor nur eine Spalte gruppieren möchten, können Sie die Abfrage verschachteln:

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

Teile meinen blöden Gedanken:

Möglicherweise kann ich nur für c1, nicht aber für c2 "distinct" auswählen. Die Syntax lautet also möglicherweise select ([distinct] col)+, wobei distinct ein Qualifikationsmerkmal für jede Spalte ist.

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

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

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

Somit ist distinct ein Qualifikationsmerkmal für statement.

1
youkaichao