現状
アプリケーション作成で条件によってtrue
,false
を返す必要が出てきたのでやってみる。(普通に値を返すだけしかやったことないので真偽値を返す方法を知らなかった・・・)
条件
テーブルとしてusers
、カラムとしてid
,name
があります。
この2つのカラムの現状が↓になります。idと名前が入っています。
id | name |
---|---|
1 | tanaka |
2 | sato |
3 | takahashi |
ここに例えば、id→1
name→tanaka
を検索するとすでにDBの中に2つのカラムのデータが存在しているのでtrue
を返し、どちらか一方でも一致しない場合はfalse
を返すようにしたいと思います。
やってみる
結論、下のSQL文でできます。
SELECT EXISTS(SELECT 1 FROM users WHERE id = '[比較するid]' AND name = '[比較するname]');
idとnameが一致している場合は1(true)、一致していない場合は0(false)が返されます。
EXISTS
句はデータの存在チェックで利用されます。また、該当データが存在する場合は1(true)
、存在しない場合は'0(false)'を返します。
後ろの
SELECT 1 FROM users WHERE id = '[比較するid]' AND name = '[比較するname]'
に関してはまず、
WHERE id = '[比較するid]' AND name = '[比較するname]
はレコードの検索条件を指定しています。
SELECT 1
に関してはレコードが存在するために使用しています。1
は任意の数字、文字になります。今回は分かりやすいようにwhere
で指定した条件で当てはまっていたら1
を返すようにしているだけです。SELECT *
でも問題ありません。
以上このようにして条件によって異なる真偽値を返す、SQL文を書くことができました!