【发布时间】:2018-05-03 18:21:07
【问题描述】:
我有一个业务需求,需要根据一个表中的两个字段选择记录:code1 和 code2。选择是复杂且硬编码的,没有可编码的押韵或原因,并且在表中实际存在的一百对中包括大约十对。
- C, 1
- C, 2
- J, 9
- Z, 0
注意表中还有其他“C”代码,如(C, 3)。没有组合字段将它们都捕获为一个值,例如“C3”。
SQL 支持这样的查询:Two columns in subquery in where clause 例如
SELECT * from rejection_codes
where (code1, code2) in (("A", 1), ("A", 3), ("Q", 9))
有没有办法用 Rails 和 ActiveRecord 的 ORM 来做到这一点,而不使用原始 SQL?
如果重要的话,我正在使用 Postgres 运行 Rails 4.2.9。
* 你为什么不... *
添加一个字段:我无法控制数据库架构。如果我这样做了,我会添加一个新列作为该组的标志。或者将值连接成字符串的计算列。或者别的什么……但我做不到。
使用原始 SQL:是的……如果我不能通过 ORM 做到这一点,我可能会这样做。
【问题讨论】:
标签: sql ruby-on-rails postgresql activerecord