gpt4 book ai didi

sql - 如何在 Rails 中使用 GROUP_CONCAT?

转载 作者:行者123 更新时间:2023-12-01 18:03:49 25 4
gpt4 key购买 nike

我有以下查询,我想将其与 ActiveRecord 一起使用,以便可以将其转换为生产服务器上基于 native ORACLE 的查询。现在我正在使用 SQLITe。

select c.name,co.code,GROUP_CONCAT(c.name) AS GroupedName
from countries c
INNER JOIN continents co
on c.continent_code = co.code
INNER JOIN event_locations el
on el.location_id = c.id
group by co.code

最佳答案

据我所知,Rails 中没有等效的 group_concat 功能,但您可以使用 includes 来做到这一点:

continents = Continents
.joins(:countries, :event_locations)
.includes(:countries)
.group("continents.code")

continents.each do |continent|
continent.countries.join(",")
end

这只会产生 2 个查询 - 我知道,这不如一个查询那么好,但我认为这是 Rails 在没有“group_concat”的情况下可以做的最好的事情。另一种方式是这样的:

Country
.select("countries.id, GROUP_CONCAT(countries.name) as grouped_name")
.joins(:continents, :event_locations)
.group("continents.code")

但如果您这样做,则需要根据您的数据库供应商进行更改。

  • MySQL:group_concat(countries.name)
  • PostgreSQL:string_agg(countries.name, ',')
  • Oracle:listagg(countries.name, ',')

关于sql - 如何在 Rails 中使用 GROUP_CONCAT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28146848/

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