如何在MySQL serverversion 5.5上运行IF条件?
a.column1 = IF(b.column2 = 'STRING', '2012-01-01', a.column1)
在我的XAMPP localhost服务器上,上面的代码工作正常(serverversion 10),但我的主机提供程序运行serverversion 5.5,上面的代码出现错误#1064 - 你的SQL语法有错误;
有人知道解决方法吗?
编辑: 以下是查询的其余部分:
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'
正如我之前所说的,这个查询在XAMPP(serverversion 10)上工作得很好但我在webbhost(serverversion 5.5)上收到错误#1064。
编辑2: 一直试图用CASE取消IF声明,但我无法让它发挥作用。我做错了什么?
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'
也试过这个,但它也不起作用,得到错误#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'
答案 0 :(得分:0)
CASE结构就是答案。可悲的是,我没有答案设置正确。
这是有效的代码:
$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