0

我想检查是否存在列(mysql)。如果没有,mysql 应该从肯定存在的列中获取值。我的查询看起来像这样,但它不起作用:

IF NOT EXISTS (SELECT `en` FROM `HP_strings` 
               WHERE `name`='copyright' AND `group`='system')
THEN
    SELECT `default` FROM `HP_strings` 
    WHERE `name`='copyright' AND `group`='system';

我也试过

IFNULL((SELECT `en` FROM `HP_strings` 
        WHERE `name`='copyright' AND `group`='system'),
(SELECT `default` FROM `HP_strings` 
 WHERE `name`='copyright' AND `group`='system'));

结果相同(错误)

编辑:“en”不存在。我想知道,如果它存在。

4

2 回答 2

1

要检查 MySQL 中的表结构,您必须查询information_schema数据库。为此,您的 db 用户必须有权访问该系统数据库(普通用户不应该拥有)。

我不知道您要做什么,但您可能应该重新考虑您的数据库结构,这样就不需要检查表中是否存在列。

于 2012-06-04T19:06:29.227 回答
0

尝试这个:

SELECT `default` FROM `HP_strings` where isnull(`en`) and `name`='copyright' 
AND `group`='system'

编辑:(根据您的评论)

您可以从 DB 模式检查表中是否确实存在列,如下所示……但我认为您不能像您打算的那样在查询中进行操作。

SELECT *  FROM information_schema.COLUMNS  
WHERE TABLE_SCHEMA = 'db_name'  
AND TABLE_NAME = 'table_name'  
AND COLUMN_NAME = 'column_name' 
于 2012-06-04T18:55:14.840 回答