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