使用MYSQL,如何仅在表已经存在时查询它?

使用MYSQL,如何仅在表已经存在时查询它?,mysql,Mysql,我正在写一个迁移,我只在数据库中存在一个表时才尝试查询它。在某些环境中它会存在,而在其他环境中它不会,这就是为什么我想检查它是否存在。感兴趣的表称为旧密码。我做以下几件事 SELECT ID, PASSWORD FROM OLD_PASSWORD; WHERE EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'OLD_PASSWORD); 此操作失败。“.dbcSQLSyntaxEr

我正在写一个迁移,我只在数据库中存在一个表时才尝试查询它。在某些环境中它会存在,而在其他环境中它不会,这就是为什么我想检查它是否存在。感兴趣的表称为旧密码。我做以下几件事

SELECT ID, PASSWORD
      FROM OLD_PASSWORD;
      WHERE EXISTS 
(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'OLD_PASSWORD);
此操作失败。“.dbcSQLSyntaxErrorException:未找到表“用户旧密码;”这是有道理的,因为它不会存在于某些环境中

我也试过类似的东西

IF (EXISTS (SELECT *
             FROM   INFORMATION_SCHEMA.TABLES
             WHERE  TABLE_NAME = 'OLD_PASSWORD'))
  BEGIN
      SELECT ID,
             PASSWORD
      FROM   OLD_PASSWORD
  END 

但是它与mysql不兼容。

您只能在存储过程中使用
IF
语句,不是SQL查询。不可能编写满足您需要的SQL查询。有什么其他方法可以解决此问题吗?使用存储过程或使用PHP或Python之类的编程语言。因此,您应该能够从Java查询
信息\u SCHEMA.表
,然后从
OLD\u PASSWORD
执行查询,如果它返回了什么。