[quote]
hallo forum,
ich habe eine mysql-tabelle adressen.tblwohnung.
in dieser tbl stehen Leute mit ihrer wohnanschrift drin.
muster:
row_num Nr Mieter AltWohnung NeuWohnung Einkommen
0 0 Schulze München Berlin 1000,00
0 1 Bauer Paris London 1750,00
0 2 Meier Dresden Hamburg 1200,00
0 3 Stein Dresden Pirmasens 950,00
die leute haben die wohnung gewechselt.
aus einer csv-datei werden ständig neue daten importiert.
innerhalb der csv haben die neuen daten natürlich eine nummerierung, nämlich die zeilennummer.
das bedeutet, daß die zeilennummer 1 importiert wird, obwohl ein datensatz 1 bereits existiert. wenn Nr als 'primary key' definiert ist,
geht das auch gar nicht. Darum habe ich Nr mit einem einfachen Index belegt. jetzt klappt es, doch jetzt stehen zwei datensätze 1 in der tbl.
selbst dann, wenn die zeilennummer nicht mit importiert wird, es muß trotzdem neu nummeriert werden.
im moment muß ich das manuell tun, doch ich hätte dafür gerne einen code.
auf einer webseite fand ich dieses codestück:
SELECT ROW_NUMBER() OVER(ORDER BY CustomerID, OrderDate DESC) AS RowNum,
CustomerID,
SalesOrderID,
OrderDate,
SalesOrderNumber,
SubTotal,
TotalDue
FROM Sales.SalesOrderHeader
das habe ich umgeformt zu:
SELECT ROW_NUMBER() OVER(ORDER BY Einkommen) AS row_num, AltWohnung, NeuWohnung FROM Adressen.Wohnung;
ROW_Number() soll die Zeilen nummerieren und seinen wert in row_num ablegen. row_num ist ein integer und gar nicht indexiert.
wird aber nichts. statt dessen bekomme ich einen Fehler "1064". die syntax stimmt nicht. ich solle im handbuch nachschlagen. ROW_Number() steht nicht in meiner Litheratur. das muß gegoogelt werden.
mfg,
babsy
[quote]