2016-07-01 18 views
1

So habe ich diese Tabelle, in der es Spalten namens AMEX und CashOnly hat. Beide haben Werte von 1 oder 0. Jetzt, statt 1 und 0, möchte ich alle '1' Werte zu 'JA' und alle '0' Werte zu 'NEIN' ändern, so wäre es viel mehr für den Betrachter verständlich.MySQL: Update Werte für mehrere Zeilen in der gleichen Spalte

Was ist die effizienteste SQL-Abfrage, die ich verwenden könnte, um dies zu erreichen?

+0

Was sind die Arten von Ihren 'AMEX' und' CashOnly' Spalten? –

+0

AMEX und CashOnly sind auf int eingestellt. Nach dem Ändern in Varchar, was sollte die richtige "UPDATE" Abfrage sein? – lexus

Antwort

1

eine einzige UPDATE Anweisung verwenden:

UPDATE yourTable 
SET AMEX  = CASE WHEN AMEX = '0'  THEN 'NO' ELSE 'YES' END, 
    CashOnly = CASE WHEN CashOnly = '0' THEN 'NO' ELSE 'YES' END 

Beachten Sie, dass dies setzt voraus, dass Sie Ihre AMEX und CashOnly Spalten VARCHAR umgewandelt haben. Beachten Sie außerdem, dass es keine WHERE-Klausel gibt, weil Sie alle Datensätze in Ihrer Tabelle aktualisieren möchten.

+0

Hallo, ich habe es versucht, aber es gab einen Fehler, der sagt "# 1064 - Error de Syntaxe pres de 'SET CashOnly = CASE WENN CashOnly =' 0 'DANN' NO ' ELSE' JA ' END' Ã la ligne 6 – lexus

+0

@lexus Tut mir leid, ich hatte eine zusätzliche "SET" -Anweisung drin. Es sollte jetzt funktionieren. –

+0

Es hat jetzt funktioniert. Danke! – lexus

0

Nur eine case Anweisung:

select (case when AMEX = 1 then 'YES' else 'NO' end) as AMEX, 
     (case when cash = 1 then 'YES' else 'NO' end) as cash 
. . . 
+0

Hallo, es hat funktioniert, aber es hat nur die Feldeinträge ausgewählt und nicht wirklich den Wert geändert. Ich denke, das richtige Schlüsselwort sollte "UPDATE" sein, aber ich bin mir nicht sicher über die Syntax, wie man es für diese Art von Problem verwendet. – lexus

+0

Verwenden Sie stattdessen eine Ansicht. Ändern Sie die Werte nicht. Der vorhandene Wert ist eine Ganzzahl und Sie möchten ihn in ein Zeichen ändern. –

0

Wenn Sie dann Ihre Spaltentyp ändern müssen Sie wie folgt vorgehen:

erstellen 2 zusätzliche Enumerationsfeld sie Name (wie int Feld nicht ja/nein als Wert speichern kann), was Sie jetzt wollen. lass sie amex1 und cash1 sein. deklariere ihre Werte als "Ja", "Nein" setze den Standardwert auf "Nein".

Führen Sie nun nacheinander 2 Abfragen nacheinander aus.

UPDATE table_name SET amex1 = 'yes' WHERE amex = 1; 
UPDATE table_name SET cash1 = 'yes' WHERE cash = 1; 

Jetzt löschen Cash und Amex Spalte umbenennen Cash1 und Amex1 zu Cash und Amex jeweils. hoffe das hilft dir.

0

versuchen Sie dies:

update table set amex=(case when AMEX = 1 then 'YES' else 'NO' end) , 
CashOnly=(case when CashOnly= 1 then 'YES' else 'NO' end); 

ODER

update table set amex='Yes' where amex=1; 
update table set amex='No' where amex=0; 
update table set CashOnly='Yes' where CashOnly=1; 
update table set CashOnly='No' where CashOnly=0; 
Verwandte Themen