2012-06-04 15 views
0

我想檢查,如果列(mysql)存在。如果不是,mysql應該從絕對存在的列中取值。我的查詢看起來是這樣,但它不工作:MySQL如果不存在/ IFNULL SELECT其他列

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')); 

同樣的結果(誤差)

編輯: '恩' 不存在。我想知道,如果它存在。

+0

說明需要:你真的想檢查列是否存在,或者列值是否爲NULL?如果它存在,則爲 – bfavaretto

+0

。沒有列'en'。 – user1435792

+0

不要這樣做。我認爲這是不可能的。 – bfavaretto

回答

1

要檢查MySQL中的表結構,必須查詢information_schema數據庫。要做到這一點,你的數據庫用戶必須有權訪問該系統數據庫(普通用戶不應該擁有這些數據庫)。

我不知道你在做什麼,但你應該重新考慮你的數據庫結構,所以它不需要檢查一個表是否存在列。

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' 
+0

#1054 - 'where子句'中的未知列'en' – user1435792

+0

@ user1435792,根據您的發佈數據給出瞭解決方案。根據你的帖子'en'必須是一列。那麼,究竟是什麼'en'? – Rahul

+0

它是一列。但它不存在。我想檢查這個列是否真的存在。因爲有人可以創建一個'en'列,然後應該使用該列的值。 – user1435792