我有以下SQL
SELECT a,
CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other'
END
FROM test;
对于事件记录,我尝试构建如下查询
@tests = Test.find_by_sql(
"SELECT a,
CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other'
END
FROM test")
但没有返回所需的结果集!
[#<Test a: 1>, #<Test a: 2>, #<Test a: 3>, ......]
非常感谢任何帮助。
最佳答案
在 AR 中没有直接的方法可以做到这一点,因此您必须在 case..when
部分中编写,但至少这更接近 Rails 的方式。
tests = Test.all.select(%(
a,
(CASE WHEN a=1 THEN 'one'
WHEN a=2 THEN 'two'
ELSE 'other' END) as a_text
))
tests.first.a_text #= 'one' or 'two'
关于sql - Rails Active Record 相当于带有条件表达式的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41849242/