MySQL, ganze Spalte mit der gleichen Zahl multiplizieren?
Wie schon gesagt suche ich nach einer Methode, in MySQL (Navicat Lite) eine ganze Spalte (unterschiedliche Werte), mit der gleichen Zahl zu Multiplizieren.
Theoretisch sollen xx verschiedene Zellen in einer Spalte alle *100 genommen werden.
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;
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.
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?
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;
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.
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.
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...
Ich habe nur eine Datenbank im System. Sehr eigenartig. Dennoch danke.
Normalerweise müsste MySQL dann eine Meldung ausgeben "xyz Records affected". Ansonsten mach doch mal ein paar screenshots.
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?
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?
Das habe ich auch installiert, jedoch komme ich damit nicht so zurecht wie mit Navicat
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.
Hahah ok Navicat wird mal deinstalliert :D Hat geklappt, vielen Dank. :)
Danke für deine Antwort, ich würde gerne die neuen Werte in der Spalte speichern, leider funktioniert es bei mir so nicht. :o