gpt4 book ai didi

mysql - 如何在 Active Record Rails 中为子查询编写命名范围

转载 作者:行者123 更新时间:2023-11-29 09:43:55 25 4
gpt4 key购买 nike

我正在尝试从基于类别列的表中获取唯一记录。此查询给出了那些已在 MYSQL 上测试过的唯一记录。但我想知道如何在 Rails 中编写与命名范围相同的内容。谁能告诉我如何在 Rails 5 应用程序中编写以下查询的范围:

SELECT * FROM t where id = (select min(id) from t t2 where t2.category = t.category);

最佳答案

我有同样的实现,希望你能得到帮助。

类别.rb

class Category < ApplicationRecord
has_many :category_details
end

category_detail.rb

class CategoryDetail < ApplicationRecord
belongs_to :category
scope :get_first_category_vise_details, -> {order(:category_id).group_by(&:category_id).map{|cat_detail_group| cat_detail_group.last.first} }
end

select * from categories;

+----+------+
| id | name |
+----+------+
| 1 | abc |
| 2 | xyz |
+----+------+

select * from category_details;

+----+-------------+-------------+
| id | category_id | description |
+----+-------------+-------------+
| 1 | 1 | test |
| 2 | 1 | test1 |
| 3 | 1 | test2 |
| 4 | 2 | test |
| 5 | 2 | testabc |
+----+-------------+-------------+

CategoryDetail.get_first_category_vise_details

[#<CategoryDetail id: 1, category_id: 1, description: "test">, #<CategoryDetail id: 4, category_id: 2, description: "test">]

关于mysql - 如何在 Active Record Rails 中为子查询编写命名范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56051061/

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