5.5

2016-03-19 25 views
0

nasıl av MySQL Serverversion 5.5 üzerinde bir IF koşulu çalıştırabilirim koşul Serverversion üzerinde IF çalıştırmak nasıl? Benim XAMPP localhost sunucusunda 5.5

a.column1 = IF(b.column2 = 'STRING', '2012-01-01', a.column1) 

yukarıdaki kodu (serverversion 10) mükemmel çalışıyor, ama benim ev sahibi sağlayıcı Serverversion 5.5 çalışır ve yukarıdaki kod hata # 1064 orada alır - Eğer SQL sözdizimi bir hata var;

herhangi bir geçici bir çözüm biliyor mu?

DÜZENLEME: sorgusuna gerisi nerede:

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' 

Ve ben daha önce dediğim gibi, bu sorgu XAMPP (Serverversion 10) üzerinde mükemmel çalışır ama benim webbhost hata # 1064 olsun (serverversion 5.5) .

EDIT 2: IF deyimini CASE ile repelece etmeyi denedim, ancak işe yaramayacağım. Neyi yanlış yapıyorum?

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' 

de bu çalışıyorum Been, ancak hata # 1064 alma ya çalışmaz:

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

doğru görünüyor - Eğer tüm SQL sorgusu sonrası olabilir? – Gerfried

+0

Bir geçici çözüm için, bir vaka yapısı hile yapardı. –

+0

Hayır, çalışmıyor. Sorgu yürütülür, ancak hiçbir değer değişmez. – Anna

cevap

0

VAKA yapı cevap oldu. Ne yazık ki doğru olarak ayarlamak için bir cevabım yok.

Bu çalıştı kodudur:

$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 
İlgili konular