作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以使用
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/
我是一名优秀的程序员,十分优秀!