MySQL IF NOT EXISTS / IFNULL SELECT其他专栏

时间:2012-06-04 18:46:25

标签: mysql select if-statement exists ifnull

如果列(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'不存在。我想知道,如果它存在。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

试试这个:

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

编辑:(根据您的评论)

您可以从下面的数据库架构中检查表中是否存在列,但我不认为您可以在查询中操作,就像您想要的那样。

SELECT *  FROM information_schema.COLUMNS  
WHERE TABLE_SCHEMA = 'db_name'  
AND TABLE_NAME = 'table_name'  
AND COLUMN_NAME = 'column_name'