0

私のテーブルには、所有者の情報を保存しています。所有者は、名前または国籍、またはその両方を持つことができます。

データベースにクエリを実行する必要があります。これは、名前が存在するかどうかを確認してから、名前または国籍を取ります。

現在、以下のクエリを使用しています:

SELECT id,name,nationality FROM owners 

大丈夫ですが、名前または国籍を1列にまとめたいです。

4

4 に答える 4

4

「カスタム列」と呼ばれるものの一般的な構文は*expression* AS *column_name*. たとえば1 AS one、値が常に整数「1」である「one」という列が表示されます。あなたがする必要があるのは、またはのいずれnamenationalityに評価される式を作成し、その式に列名を与えることです。

空の名前を として保存すると仮定するとNULL、次を使用できます。

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

空の名前が空の文字列として格納されている場合は、別の構成を使用する必要があります。

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
于 2012-04-16T06:17:57.953 に答える
1

クエリで単純なif /else条件を使用できます。

以下のように:

SELECT id,if(name='',nationality,name) as ownerinfo FROM owners 
于 2012-04-16T06:18:26.640 に答える
0

値が空白ではなく NULL に設定されていると仮定します。

SELECT IF(name IS NULL, nationality, name) AS name_or_nationality FROM owners

MySQL の条件ステートメントの説明: http://timmurphy.org/2009/08/13/inline-if-and-case-statements-in-mysql/

于 2012-04-16T06:24:03.523 に答える
0

name が null の場合、次の SQL select ステートメントは値を返します。

SELECT id,
       case when ifnull(name,'') = '' 
       then nationality 
       else name 
       end as name_equiv
FROM owners;
于 2012-04-16T06:18:46.457 に答える