【发布时间】:2017-06-13 23:40:14
【问题描述】:
我写了这段代码,当我执行它时,它说我在更新语句附近的 mysql 语法有问题
set @s1 = (select if ((select count(*) from information_schema.columns where table_name='foo' and column_name='bar_id') > 0,
'select 1',
'alter table foo add column bar_id bigint; update foo set bar_id = baz_id;'));
prepare stmt from @s1;
execute stmt;
deallocate prepare stmt;
如果我将代码更改为
set @s1 = (select if ((select count(*) from information_schema.columns where table_name='foo' and column_name='bar_id') > 0,
'select 1',
'alter table foo add column bar_id bigint;'));
prepare stmt from @s1;
execute stmt;
deallocate prepare stmt;
update foo set bar_id = baz_id;
然后就可以了。但我想要 if 条件中的更新语句。
我不能把它变成 SP。
错误:
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“update foo set bar_id = baz_id”附近使用正确的语法
【问题讨论】:
-
尝试阅读错误信息。它通常会说明问题所在。
-
错误只是要求我使用正确的语法。
-
不,仔细看:near 'update foo set
标签: mysql