gpt4 book ai didi

sql - 使用多个 Arel OR 子句时省略链式括号

转载 作者:行者123 更新时间:2023-12-02 09:16:23 26 4
gpt4 key购买 nike

我正在尝试抽象出有人插入我们代码库的原始 sql 主体,我们使用的是 Rails 4.2.8。我想要生成以 where 子句结尾的 sql,如下所示:

WHERE col1=1 OR col2=1 OR col3=1

我正在使用以下 Arel 来尝试生成该 sql:

my_clause = mytable[:col1].eq(1)
.or(mytable[:col2].eq(1))
.or(mytable[:col3].eq(1))
puts my_clause.to_sql

我实际上得到的是:

WHERE (col1=1 OR col2=1) OR col3=1

我发现我的代码没有生成“WHERE”这个词。为了清楚起见,我添加了这一点。

我们的 dba 已经能够向我保证,这在性能方面不是什么大问题,但它触发了我的强制症,我想知道我将使用什么 Arel 语法来获得不带括号的链式 OR 子句。

最佳答案

您可以尝试直接使用 Arel::Nodes::Or 构建您想要的查询(而不是处理括号的 or 方法):

[
mytable[:col1].eq(1),
mytable[:col2].eq(1),
mytable[:col3].eq(1)
].reduce {|clause, condition|
Arel::Nodes::Or.new(clause, condition)
}

关于sql - 使用多个 Arel OR 子句时省略链式括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46892056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com