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 に答える