我有一个包含这些字段的表:
表电话簿
id
user_id
number
name
added
card_id
speeddial
updated_at
sms_group_name
某些记录具有相同的sms_group_name和number,但是相同的sms_group_name存在一些重复的数字。首先,我想为每个sms_group_name和group_concat使用不同的数字,分隔符。
查询结果必须如下:
user_id,number,number,number,number,sms_group_name
选择条件为user_id的位置
我尝试了所有这些:
# @a = Phonebook.select(["DISTINCT number","sms_group_name"]).where(user_id: session[:user_id]).order(:sms_group_name).distinct
# @a = Phonebook.where(user_id: session[:user_id])
# Product.where.not(restaurant_id: nil).select("DISTINCT ON(name) name, restaurant_id, price, updated_at").order("name, updated_at")
# @a = Phonebook.where(user_id: session[:user_id]).select("DISTINCT ON(number) number, added, user_id, speeddial, updated_at,sms_group_name").order("sms_group_name")
# Phonebook.select("DISTINCT(number), *").where("user_id = ?", session[:user_id]).order("sms_group_name ASC").group_by(&:sms_group_name)
# Location.where("calendar_account_id = ?", current_user.calendar_accounts.first).group(:alias).order("alias ASC").group_by(&:category)
# @a = Phonebook.where("user_id = ?", session[:user_id]).order("sms_group_name ASC").group(:sms_group_name)
# @a = Phonebook.select("DISTINCT(number), sms_group_name").where("user_id = ?", session[:user_id]).order("sms_group_name ASC").group_by(&:sms_group_name)
# @a = Phonebook.select(:number)distinct.where("user_id = ?", session[:user_id]).order("sms_group_name ASC").group_by(&:sms_group_name)
# @a = Phonebook.select("DISTINCT(number), sms_group_name").group("sms_group_name")
他们中的大多数都会出错或无效。
怎么能达到这个目的?
我尝试将所有值选择到对象数组中,之后我尝试消除它们,但现在没有合适的解决方案。
两者的解决方案是什么: 1-使用查询解决方案,可以添加一个块 2-使用散列或数组
的解决方案最好的问候,