ziemlich oft muss ich dann die Anzahl der verschiedenen Datensätze in einer Tabelle zählen. Doch in MySQL wederAnzahl der verschiedenen Datensätze (Zeilen) in einer Tabelle
select count(distinct *) from t;
noch
select count(distinct t.*) from t;
Arbeit. Ich weiß, dass ich um das von
select count(*) as countdistinctrows
from (
select distinct * from t
) x;
arbeiten kann, aber das ist hässlich. Gibt es wirklich keine Möglichkeit, nach der Anzahl der einzelnen Zeilen zu fragen? By the way,
select distinct count(*) from t;
ist nicht die Antwort, da dann unterschiedliche auf die Anzahl der Zeilen in der Tabelle angelegt wird, und gibt somit die gleiche wie
select count(*) from t;
'Distinct *' ist ein Oxymoron – Strawberry
Natürlich fällt mir eine Frage ein: Warum sind doppelte Zeilen in einer Relationstabelle vorhanden? Gibt es keinen Primärschlüssel? Der "hässliche Workaround" ist der beste Weg, um zu zählen. – dnoeth
@dnoeth: Sicher, man möchte keine doppelten Zeilen haben. Aber in meinem Szenario ist es nicht so einfach. Ich erstelle eine Tabelle aus Daten, wo z.B. Spalte 1 soll eine Zeichenfolge sein, die eine Kategorie angibt. Aber in den Quelldaten kann es "Kategorie 1" oder "Kategorie 1" sein. Ich benutze MySQL mit regexp_replace, um das Durcheinander zu säubern. Und danach würde ich gerne wissen, ob ich nur noch einzelne Zeilen habe. – diffset