Wie führe ich eine IF-Bedingung auf av MySQL Serverversion 5.5?Wie run IF Bedingung auf Serverversion 5.5
a.column1 = IF(b.column2 = 'STRING', '2012-01-01', a.column1)
Auf meinen XAMPP localhost Server der obige Code funktioniert perfekt (Serverversion 10), aber mein Host-Provider läuft Serverversion 5.5 und es der obige Code wird Fehler # 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax;
Kennt jemand eine Problemumgehung?
EDIT: Hier ist der Rest der Abfrage:
UPDATE table1 a INNER JOIN table2 b ON (a.id = b.other_id) SET
b.column1='something',
a.column1 = IF(b.column2 = 'STRING', '2012-01-01', a.column1)
WHERE a.id = '41' AND b.other_id = '3150'
Und wie ich schon sagte, diese Abfrage funktioniert perfekt auf XAMPP (Serverversion 10), aber ich bekomme Fehler # 1064 auf meinem webbhost (Serverversion 5.5) .
BEARBEITEN 2: Sie versucht, die IF-Anweisung mit CASE zu stoßen, aber ich kann es nicht zum Funktionieren bringen. Was mache ich falsch?
UPDATE table1 a INNER JOIN table2 b ON (a.id = b.other_id) SET
b.column1='something'
CASE
WHEN b.column2 = 'STRING' THEN a.column2 = '2012-01-01'
ELSE NULL
END
WHERE a.id='3' AND b.other_id = '3'
worden auch dies versucht, aber es funktioniert auch nicht, Fehler # bekommen 1064:
UPDATE table1 a INNER JOIN table2 b ON (a.id = b.other_id)
SET a.column2 = CASE
WHEN b.column2 = 'STRING' THEN '2012-01-01',
ELSE a.column2
END
b.column1='something'
WHERE a.id='3' AND b.other_id = '3'
Sieht richtig - könnten Sie die ganze SQL-Abfrage schreiben? – Gerfried
Für eine Problemumgehung würde ein Fallkonstrukt den Trick machen. –
Nein, funktioniert nicht. Die Abfrage wird ausgeführt, aber es werden keine Werte geändert. – Anna