[SQL] Where条件を検索結果のカラムの内容によって変更する

‘students’テーブルがあり、内容は下記のようになっています。

この中から’name’が’taro’のレコードを抽出したいと思います。

また’newname’というカラムがあり、こちらには改名後の名前が保存されています。

改名後の名前があった場合、旧名称は使われないので、検索対象は’newname’のほうを検索対象とする必要があります。

条件を整理すると以下のようになります。

・’newname’で検索をおこなう。

・’newname’に値が入っていない場合は、’name’で検索をおこなう。

・’name’と’newname’の両方に値が入っている場合、’name’のほうは検索対象にしない。

上記の’students’テーブルにて’taro’で検索をおこなった場合、条件を満たすレコードはID1,ID3の2件になる必要があります。※ID2の’name’は’taro’ですが、’john’に改名しているため、検索対象から除外する必要があります。

以上の条件を満たすSQLは以下のようになります。

select
  * 
from
  students 
where
  (name = 'taro' and newname = '') 
  or newname = 'taro';

こちらの実行結果は以下の通りです。

想定通りの結果が得られていることが確認できました。

木曜日担当: nishida



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム