我有一个包含字段program_title,department_id和date的模型程序。我插入了两行具有相同程序标题和日期但行不同的department_id。
Insert into programs(program_title,date,department_id) Values ("prog1","4/2/2017","1");
Insert into programs(program_title,date,department_id) Values ("prog1","4/2/2017","2");
现在我想返回与program_title不同的行,无论是department_id。我试过了,
@event_contents=Program.select(:id,:date,:program_title).distinct(:program_title)
但它仍会返回两行。任何帮助表示赞赏。
答案 0 :(得分:2)
使用DISTINCT
时,SQL只能折叠所有值相同的行。因为您选择的id
对于每条记录都不同,所以行不是不同的。 E.g:
---------------------------------
| id | program_title | date |
---------------------------------
| 1 | prog1 | 4/2/2017 |
| 2 | prog1 | 4/2/2017 |
---------------------------------
您需要从id
中排除#select
才能使其发挥作用:
Program.select(:date, :program_title).distinct
答案 1 :(得分:0)
试试这个
Program.all.distinct(:program_title).pluck( :id,:program_title,:date)
它会将数据作为元素数组返回
希望有所帮助