如何在serverversion 5.5上运行IF条件

时间:2016-03-19 14:15:49

标签: mysql sql

如何在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'

1 个答案:

答案 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