[SQL] Where条件を検索結果のカラムの内容によって変更する
- 2019年10月24日
- Web Service
‘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
nishida at 2019年10月24日 10:00:24