SQL Query

Helios co.

Lt. Commander
Registriert
März 2005
Beiträge
1.863
Hallo @all,

ich versuche eine Query zusammenzubacken, die mir die Zeilen zurückgibt, deren Wert in einer Spalte zum ersten Mal vorkomment.

Am besten ich zeige das anhand eines Beispiels. Folgende Tabelle sei gegeben:

id wert
1 test1
2 test2
1 test3

Was ich als Ergebnis des SELECTS haben will, ist:
id wert
1 test1
2 test2

Ich weiß, dass ich das bei MySQLmittels Group By auf die Spalte id machen könnte.
Das ist aber auch nur bei MySQL möglich.

Hat jemand eine Idee? Bin dankbar für jeden Rat!
 
hi

wonach diffiniert sich den ein wert ob er das erstes kommt?
Group by gehört zum sql standard von daher kan dies nicht nur mysql,
wobei in diesen fall mit join gearbeitet werden muss, nurstellt sich halt die eingangs
erwähnte frage woran machst du es fest welcher wert als erstes kam?
 
Mir ist durchaus klar,dass Group By auch in Oracle vorhanden ist,aber die Variante in MySQL verhält sich anders als die von Oracle (oder anderen SQL Derivaten).

Beispielsweise muss bei Oracle der SELECT - Teil dem Group By Teil entsprechen, das ist auch die Forderung des SQL Standards. Bei MySQL ist das aber nicht der Fall. Hier können die Group By Attribute von denen im SELECT abweichen. Es gibt noch weitere Unterschiede (z.B. Clob Spalten im Group By Teil, oder fehlende Aggregate im SELECT). Letzten Endes haben die MySQL Entwickler an dieser Stelle Freiheiten geschaffen, die bei der Migration von MySQL zu Problemen führen.

Wonach sortiert denn MySQL die Ausgabe eines einfachen Selects? Und warum unterscheidet sich diese von der in Oracle? Und warum ist die Ausgabe stets gleich. D.h. wenn ich 10 oder 1000 Mal einen SELECT auf dieselbe Tabelle durchführe, kommen die Ergebnisse stets in gleicher Reihenfolge raus. Es gibt also interne Sortierfunktionen.

Mir ist im Prinzip egal welche Zeilen kommen, ich will nur nicht dass doppelte IDs in der Ergebnismenge sind. Wonach also werte sortiert werden, ist mir gleich und welche werte kommen auch.

Hmm, wie stellst du dir den Join vor? Ich wüsste nicht wie ich diesen konstruieren sollte.
 
Zuletzt bearbeitet:
In Oracle kan man auch nach Spalten sortieren / gruppieren die nicht im select vorkommen,
habs gerade auch bei oracle 10g getestet.

wenn dir die reihen folge der werte doch egal ist,
also ob in dien bsp
1 test1
2 test2

oder
1 test3
2 test2

dann kansnt du einfach:
Code:
select id, max(wert) from table group by id;
machen.

Es würde auch so funktionieren :
Code:
select max(wert) from table group by id;
 
Hmm das könnte funzen!

Werde es gleich mal test!

Vielen Dank für deine Hilfe!
 
Zurück
Oben