MySQL, ganze Spalte mit der gleichen Zahl multiplizieren?

...komplette Frage anzeigen

1 Antwort

Willst Du den Wert nur multipliziert zurückgeben? Dann:

SELECT Spalte * 100 FROM Tabelle;

Willst Du den neuen Wert in der selben Spalte speichern? Dann:

UPDATE Tabelle SET Spalte = Spalte * 100;
Syncai 28.02.2017, 08:57

Danke für deine Antwort, ich würde gerne die neuen Werte in der Spalte speichern, leider funktioniert es bei mir so nicht. :o

0
ohwehohach 28.02.2017, 09:10
@Syncai

Das ist aber doch sehr seltsam, denn das ist die korrekte Syntax für solch ein Update. Bist Du sicher, dass das nicht geht? Welchen Typ hat die Spalte? Ist das ein nummerischer Typ oder doch VARCHAR? Wenn es nämlich VARCHAR ist, dann musst Du ggf. vorher in eine Zahl wandeln und dann wieder in VARCHAR.

0
ohwehohach 28.02.2017, 13:46
@Syncai

Hm. Kann eigentlich dann nicht sein. Ein Update ist der korrekte Weg, das zu machen. Was passiert denn? Bekommst Du einen Fehler oder wird der Wert nicht geändert? Wenn ersteres: Welchen Fehler? Wenn zweiteres: Hast Du mal das SELECT neu ausgeführt?

0
Syncai 28.02.2017, 13:56
@ohwehohach

Der Wert wird nicht geändert. Keine Fehlermeldung. Ich dachte SELECT wäre nur für die erste Option. Ich habe gerade noch einmal erst SELECT und danach UPDATE ausgetestet. Funktioniert jedoch nicht. Woran könnte es noch liegen? Wenn meine Tabelle "Monster" heißt und die Spalte "EXP" wäre das so richtig?

UPDATE Monster SET EXP = EXP * 100;





0
ohwehohach 28.02.2017, 13:58
@Syncai

Ich meinte mit "Select neu ausgeführt", ob Du nach dem Update die Daten nochmal neu abgerufen hast und zu schauen, ob sich was geändert hat.

Sie Syntax des Update-Statement ist so in Ordnung.

0
Syncai 28.02.2017, 14:02
@ohwehohach

Ich habe bei der Datenbank in Navicat auf "refresh" geklickt. Also falls ich nicht noch etwas anderes machen muss um die Daten vernünftig zu aktualisieren, ja. 

0
ohwehohach 28.02.2017, 14:05
@Syncai

Also das einzige was mir jetzt noch einfällt wäre, dass Du auf zwei unterschiedlichen Datenbanken oder Tabellen arbeitest... Ich schreibe täglich Software, welche Datenbankupdates macht (verschiedene Datenbanksysteme, unter anderem auch MySQL). Und in jedem (wirklich JEDEM) diese Systeme führt der Befehl "UPDATE Tabelle SET Spalte = Spalte * 100" dazu, dass am Schluss in jedem Record von Tabelle der Wert von Spalte mit 100 multipliziert wurde.

Mehr kann ich Dir dazu leider auch nicht sagen...

0
Syncai 28.02.2017, 14:09
@ohwehohach

Ich habe nur eine Datenbank im System. Sehr eigenartig. Dennoch danke.

0
Syncai 28.02.2017, 14:21
@Syncai

Allerdings wenn ich den Befehl in die Konsole eingebe, und Enter drücke, komme ich nur in die nächste Zeile und ich habe nicht das Gefühl das irgendetwas passiert.

0
ohwehohach 28.02.2017, 14:24
@Syncai

Normalerweise müsste MySQL dann eine Meldung ausgeben "xyz Records affected". Ansonsten mach doch mal ein paar screenshots.

0
Syncai 28.02.2017, 14:28
@ohwehohach

Autsch ehm das wird jetzt peinlich.. Bevor ich jetzt Screenshots mache, noch eine Frage. Funktioniert das bei "SQL Server" genau so oder gibt es da Unterschiede? 

0
ohwehohach 28.02.2017, 14:29
@Syncai

Also mit MSSQL meinst Du den SQL Server von Microsoft? Ja, da bin ich mir sogar noch sicherer :-) Aber warum nimmst Du da nicht das Microsoft SQL Server Management Studio?

0
Syncai 28.02.2017, 14:32
@ohwehohach

Das habe ich auch installiert, jedoch komme ich damit nicht so zurecht wie mit Navicat

0
ohwehohach 28.02.2017, 14:35
@Syncai

Vertrauen ist gut, Kontrolle ist besser :-) Versuche es mal im SQL Server Management Studio. Einfach zu der Datenbank verbinden, links in der Baumansicht irgendeine Tabelle Deiner Datenbank anklicken und dann oben in der Werkzeugleiste (oder dem Menü) auf "Neue Abfrage" klicken. Dann geht ein Fenster auf, in welchem Du SQL-Abfragen eingeben kannst.

Gib das Update-Statement ein und drücke F5. Dann sollte das ausgeführt werden und im Ergebnisfenster müsstest Du sehen, wieviele Records aktualisiert wurden.

0
Syncai 28.02.2017, 14:40
@ohwehohach

Hahah ok Navicat wird mal deinstalliert :D Hat geklappt, vielen Dank. :)

1

Was möchtest Du wissen?