LoginSignup
4
1

More than 5 years have passed since last update.

RubyのSequelライブラリを使ってjoin,where,update

Last updated at Posted at 2018-06-20

Sequelは、jeremyevansさんが開発したRubyのライブラリ(gem)です

hoge.rb
DB[:table1].join_table(:inner, :table2, table1_id: :table2_id)
           .where(Sequel[:table1][:table1_id] >= 10000)
           .update(status: 1)

とか、(require 'sequel')はやっといてね。

sequelを使ってwhere句内で比較とかの記事が薄めだったのでメモ代わりに残しておきます。

.join_tableの引数はこんな感じ↓
join_table(type, table, expr = nil, options = OPTS, &block)
参考(https://www.rubydoc.info/github/jeremyevans/sequel/Sequel%2FDataset:join_table)

外部キーにもなっているキーで比較しようとすると、
Mysql2::Error: Column 'tweet_id' in where clause is ambiguous
みたいに、どっちのテーブルのidやねん!って怒られるので、Sequel使ってテーブルから指定してあげましょう。

ちなむと、
ハッシュ値で比較する場合は、

hash_compare.rb
.where(:id => 3,
       :id_source => 1..8)

とかで比較すればいいんですけど、これだと◯◯以上とかの比較ができない。
1..8  で1以上8以下
1...8 で1以上8未満

 >とか<=とか使いたい場合はSequelを用いましょう。

【メモ】
.update_sqlで実際の発行sql文見れるので、デバックに便利です。

4
1
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
4
1