2012-04-16 8 views
0

私のテーブルに私は所有者の情報を格納しています。所有者は、名前または国籍またはその両方を持つことができます。MySQLで1つの列または他の列を表示する方法

名前が存在するかどうかをチェックし、名前または国籍を取るデータベースを照会する必要があります。

現在、私は、クエリの下に使用しています:

SELECT id,name,nationality FROM owners 

それは大丈夫だが、私は、単一の列の下の名前や国籍をしたいです。

答えて

4

「カスタム列」と呼ばれる一般的な構文は*expression* AS *column_name*です。例えば、1 AS oneは、値が常に整数 "1"である "one"という列を与えます。あなたがする必要があるのは、nameまたはnationalityのいずれかと評価され、その式に列名を与える式を作成することです。あなたはNULLとして空の名前を格納すると仮定すると、

、あなたが使用することができます。

SELECT id, CASE WHEN name THEN name ELSE nationality END AS name_or_nationality FROM owners 
SELECT id, IF(name, name, nationality) AS name_or_nationality FROM owners 
+0

+1「COALESCE」は、それを知らなかった、ty – kontur

1

はあなたが行うことができます。

SELECT id, COALESCE(name, nationality) AS name_or_nationality FROM owners 

を空の名前は空の文字列として保存されている場合は、いくつかの別の構文を使用する必要があります単純なif /elseの条件で照会します。以下のような

SELECT id,if(name='',nationality,name) as ownerinfo FROM owners 
0

名がnullの場合、このSQL select文は、値を返します。

SELECT id, 
     case when ifnull(name,'') = '' 
     then nationality 
     else name 
     end as name_equiv 
FROM owners; 
関連する問題