Mysql SQL仅在数据库中存在表时更新该表

Mysql SQL仅在数据库中存在表时更新该表,mysql,sql-update,Mysql,Sql Update,我有一个mySQL数据库,它可能有一个名为jason的表。 数据库的单独实例可能没有jason表(它可能有其他公用表) 我想对这两个数据库运行一个简单的更新,但是更新是针对jason表的 我知道我可以做像这样的事情 DROP TABLE IF EXISTS `jason`; 是否可以运行类似以下内容的更新: IF EXISTS `jason` UPDATE `jason` SET... 我似乎无法使任何东西正常工作。只要运行update语句,如果该表不存在,它将失败并且不会造成任何损坏。如果

我有一个mySQL数据库,它可能有一个名为
jason
的表。 数据库的单独实例可能没有
jason
表(它可能有其他公用表)

我想对这两个数据库运行一个简单的更新,但是更新是针对
jason
表的

我知道我可以做像这样的事情

DROP TABLE IF EXISTS `jason`;
是否可以运行类似以下内容的更新:

IF EXISTS `jason` UPDATE `jason` SET...

我似乎无法使任何东西正常工作。

只要运行update语句,如果该表不存在,它将失败并且不会造成任何损坏。

如果命名一个不存在的表,update语句将无法编译。您需要生成动态SQL并仅在表存在时执行它。

您也可以参考这些。所有模式信息都在一个数据库中,因此基本上您可以以相同的方式执行任何查询。示例位于底部。

它不会失败,但如果您坚持,您可以解决以下问题:

IF EXISTS (SELECT * FROM Table1)
   UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
   INSERT INTO Table1 VALUES (...)

很好的答案(15个字符填充)如果我在phpMyAdmin或另一个DB客户机中运行它作为更大更新集的一部分,它会失败并停止查询。有没有办法告诉mySQL忽略这些类型的错误?对不起,我投了反对票,这看起来不干净。这就是我现在拥有应用程序的方式,它正在用条目填充我的错误日志。是的,它们没有“伤害”任何东西,但是我认为我的错误记录了一个要修复的ToDOS列表,所以我不喜欢我的错误日志记录中的任何东西,如果你准备好去捕捉它创建的错误,就不会造成损坏,否则它会溢出到事件日志中,中断一些其他进程,或者在路上造成故障。这就是为什么我们有
createtableif NOT EXISTS
。你不能在mysql的任意脚本中使用这种语法,所以它不起作用。