Michael Schröpl: Wie kann man doppelte Felder von SQL nicht ausgeben lassen

Beitrag lesen

Ich möchte nun, daß bei der Ausgabe alle Zeilen, wo Nummer schon mal vorgekommen ist, nicht ausgegeben werden. Also es keine 2 Zeilen gibt, wo Nummer den gleichen Wert hat. Das würde dann so aussehen:
1 A
2 irgendwas
3 was

Kennt jemand eine Möglichkeit, sowas in SQL zu machen?

SQL 'denkt' mengenorientiert.
Wie willst Du SQL klar machen, welche (!) der gleichen
Zeilen Du haben willst?
Innerhalb einer Menge gibt es keine "Reihenfolge".

"group by" ist in Deinem Falle nicht anwendbar, weil Du
damit nur Spalten ausgeben kannst, die entweder durch
Gruppierungsfunktionen erzeugt wurden oder selbst das
Gruppierungskriterium waren.

Du kannst aber in SQL den Tabelleninhalt sortiert nach
dieser Spalte machen (select * from tabellenname order
by feld1) und beim Auslesen der Treffer prüfen, ob der
Wert von feld1 identisch zu dem des Vorgängers ist.
Das ist einfach und effizient; Du hast aber keinerlei
Kontrolle darüber, welchen der drei Werte mit feld1='1'
Du zuerst bekommst ("order by" ist m. E. im Allgemeinen
implementierungsspezifisch bezüglich seines tie-breakers).

Du kannst sogar das "order by" über mehrere Spalten
laufen lassen (select * from tabellenname order by
feld1, feld2), und *vielleicht* hilft Dir das dabei,
innerhalb gleicher feld1-Werte den von Dir gewünschten
feld2-Treffer nach vorne zu sortieren. Dann wäre Dein
Problem *fast* ausschließlich mit SQL-Mitteln gelöst
(nur das Wegwerfen der unerwünschten Folgezeilen müßtest
Du im nachgeschalteten Programm separat erledigen).