ruby - Sequel中多列上的匹配值列表
问题描述
给定一个具有复合主键的表,比如a
and b
。如果我有一个我想查询的对列表,比如说,
pairs = [[1, 1], [2, 2], [2, 1]]
如何在数据集中使用这些进行过滤?
SQL 中的结果看起来像
WHERE (a, b) IN ((1, 1), (2, 2), (2, 1))
可以DB.values()
用来表示右侧,但我不确定如何将实际过滤到数据集中。
解决方案
DB[:table].where([:a, :b]=>[[1,1], [2,2], [2,1]])
# SELECT * FROM table WHERE ((a, b) IN ((1, 1), (2, 2), (2, 1)))