0

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

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

因此,我想编写查询,以便如果新列存在,则在我的选择中使用它。如果不是,那么我使用默认值。

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

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

4

1 回答 1

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'' ))  
于 2013-10-15T08:58:11.083 回答