gpt4 book ai didi

mysql - 如何在Arel中表达MySql函数 `GROUP_CONCAT(DISTINCT column)`?

转载 作者:行者123 更新时间:2023-11-29 16:36:59 26 4
gpt4 key购买 nike

我可以使用

Arel::Nodes::NamedFunction.new('GROUP_CONCAT', [an_arel_table[:a_column]])

生成

GROUP_CONCAT(a_column)

在我的SELECT语句中。但如何添加 DISTINCT 选项?

Arel::Nodes::NamedFunction.new('GROUP_CONCAT', ['DISTINCT', an_arel_table[:a_column]])

产量

GROUP_CONCAT(DISTINCT, a_column)

这是一个语法错误。

最佳答案

这有点像黑客,但以下方法有效。

Arel::Nodes::InfixOperation 提供了一种生成序列 X DISTINCT Y 的机制。通过将 X 设置为空白 (Arel::Nodes::SqlLiteral.new('')),我们最终得到 DISTINCT Y

Arel::Nodes::NamedFunction.new('GROUP_CONCAT', [
Arel::Nodes::InfixOperation.new('DISTINCT',
Arel::Nodes::SqlLiteral.new(''),
an_arel_table[:a_column]])])

Arel 的更高版本(Rails 4.2 以上)支持 UnaryOperation,它可能允许将 DISTINCT 修饰符表达为 Arel::Nodes::UnaryOperation.new('DISTINCT', an_arel_table[:a_column])。 (未经测试)

关于mysql - 如何在Arel中表达MySql函数 `GROUP_CONCAT(DISTINCT column)`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53542035/

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