我想知道我是否可以使用MySQL IF来选择要更新的表。我正在尝试这样的事情:
UPDATE IF(:listId = 'global', `profanity`,`accountProfanity`) SET `active` = IF(`active` = 1,0,1) WHERE `id` = 1
:listId
可以是字符串global
或数字。
当:listId是数字时,我想更新表profanity
,否则,我想更新accountProfanity
。
当我运行此查询时,我得到了这个结果:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF('global' = 'global', `profanity`,`accountProfanity`) SET `active` = IF(`activ' at line 1
还有其他办法吗?
答案 0 :(得分:0)
您可以使用预准备语句:
SET @id = 1;
SET @table_name = IF(:listId = 'global', `profanity`,`accountProfanity`);
SET @update_query = CONCAT('UPDATE ', @table_name, '
SET active = IF(active = 1,0,1)
WHERE id = ', @id);
PREPARE stmt FROM @update_query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;