2016-03-19 8 views
0

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' 
+1

Sieht richtig - könnten Sie die ganze SQL-Abfrage schreiben? – Gerfried

+0

Für eine Problemumgehung würde ein Fallkonstrukt den Trick machen. –

+0

Nein, funktioniert nicht. Die Abfrage wird ausgeführt, aber es werden keine Werte geändert. – Anna

Antwort

0

CASE-Konstrukt war die Antwort. Leider habe ich keine richtige Antwort.

Dies ist der Code, der gearbeitet:

$query ="UPDATE table1 a 
INNER JOIN table2 b 
ON (a.id = b.other_id) SET 
b.column1='STRING', 
a.column1 = CASE WHEN b.column2 = 'STRING' THEN 'something' ELSE column1 END 
WHERE a.id = 3 AND b.other_id = 3