MySQL查询哪些列可能丢失

时间:2013-10-15 08:50:48

标签: mysql

我有一个Microsoft存储过程,使用OpenQuery查询两个MySQL数据库。两个MySQL数据库应该具有相同的模式,因此我可以在两个上运行相同的查询。

但是,我们很快就会改变MySQL模式,并在表中添加一列。但是这两个MySQL数据库不会同时发生,我不知道发布的确切日期。

因此我想编写查询,这样如果新列存在,那么我在我的select中使用它。如果没有,那么我使用默认值。

这可能吗? (这是一个处理表模式差异的查询?)

(不要与字段肯定存在的'coelesce'混淆,但只是空。)

1 个答案:

答案 0 :(得分:0)

您可以使用以下SELECT语句:

SELECT * 
FROM information_schema.COLUMNS 
WHERE 
    TABLE_SCHEMA = 'database name' AND TABLE_NAME = 'your table name' 
          AND COLUMN_NAME = 'the column name you want to check for'

如果以上内容返回值,则您的列就在那里。如果没有,则运行备用SELECT语句

更新声明:

IF EXISTS (SELECT *
           FROM OPENQUERY(servername, 'SELECT * 
                                       FROM information_schema.COLUMNS 
                                       WHERE TABLE_SCHEMA = ''database name'' 
                                             AND TABLE_NAME = ''your table name'' 
                                             AND COLUMN_NAME = ''the column name you want to check for'' ))