2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

whereの使い方

Last updated at Posted at 2021-05-01

whereの使い方

■whereの基本形
モデル名.where(カラム名: )
User.where(age: 20)

「Userテーブルの中でageカラムが20のレコードを検索」という意味になります。
※複数ヒットすれば複数のレコードを返します。なお、ヒットするidのレコードが見つからない場合は、ActiveRecord_Relationクラスの空配列を返します。

条件の指定(最初のヒットデータ)

モデル名.where(カラム名: ).first
User.where(age: 20).first

条件の指定(最後のヒットデータ)

モデル名.where(カラム名: ).last
User.where(age: 20).last

条件の指定(選んで取り出す2)

モデル名.where(カラム名: ).offset 整数
User.where(age: 20).offset 5

20才のデータを1から5番目までは飛ばして6番目から取り出す

条件の指定(選んで取り出す)

モデル名.where(カラム名: ).limit 整数
User.where(age: 20).limit 5

20才のデータを5つ取り出す

条件の指定(並び順)

モデル名.where(カラム名: ).order(asc/desc)
User.where(age: 20).order(asc)
asc 小さいものから順に並べる
desc 大きいものから順に並べる

条件の複数指定(AND検索)

# whereの引数には、複数の条件を指定することができます。 
User.where(age: 20, sex: 'male', payment: true)

上記は「Userテーブルの中でageが20かつsexがmaleかつpaymentがtrueのレコードを検索」という意味になります。

and 論理積と呼ばれ、両方がtrueならtrueを返す
falsならor 論理和と呼ばれ、両方ともfalseならfalseあとは成り立てばtrueを返す
xor 排他的論理和。両方が異なる値ならtrue、異なるならfalseを返す
not これはこれまでのものと違いnotの後に値を指定するだけ。trueならfalseを示す

LIKEであいまい検索

# Stringのカラムを指定する場合、指定した文字列を含むレコードを検索することができます。
User.where('email like ?', '%@gmail.com%')

上記は「Userテーブルの中でemailに@gmail.comが含まれるレコードを検索」という意味になります。

% 任意の0文字以上の文字列
_ 任意の1文字

ORでいずれかを含む検索

# whereの後に.orをつけることで、条件1または条件2に該当のような検索ができます。※Rails5からの機能です
User.where(family_name: '山田').or(User.where(first_name: '太郎'))

「Userテーブルの中でfamily_nameが山田またはfirst_nameが太郎のレコードを検索」という意味になります。

NOTで否定検索

whereの後に.notをつけることで条件に当てはまらないレコードを返すようになります
User.where.not(status: 'reject')

「Userテーブルの中でstatusがreject以外のレコードを検索」という意味になります。

whereの使い方まとめ

基本の条件指定 【モデル.where(カラム名: 値)】
AND検索 【モデル.where(カラム名1: 値1, カラム名2: 値2)】
あいまい検索 【モデル.where('カラム名 like ?', %値%)】
否定検索 【モデル.where.not(カラム名: 値)】
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?