Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 消除轨道中的重复记录_Mysql_Ruby On Rails - Fatal编程技术网

Mysql 消除轨道中的重复记录

Mysql 消除轨道中的重复记录,mysql,ruby-on-rails,Mysql,Ruby On Rails,我正在尝试获取一条具有唯一值的记录。下面是我在使用后获得的输出 VoucherNumber.where(:goodie=> 2917) [#<VoucherNumber id: 559, vendor_id: 5, voucher_number: "1", trip_id: nil, expiry_date: "2016-03-23 18:30:00", goodie_id: 2917, status: "UN", amount: #<BigDecimal:8f9b7f0,'0

我正在尝试获取一条具有唯一值的记录。下面是我在使用后获得的输出

VoucherNumber.where(:goodie=> 2917)
[#<VoucherNumber id: 559, vendor_id: 5, voucher_number: "1", trip_id: nil, expiry_date: "2016-03-23 18:30:00", goodie_id: 2917, status: "UN", amount: #<BigDecimal:8f9b7f0,'0.122E3',9(36)>, created_at: "2016-03-04 11:37:22", updated_at: "2016-03-04 11:37:22">, #<VoucherNumber id: 565, vendor_id: 5, voucher_number: "4", trip_id: nil, expiry_date: "2016-03-23 18:30:00", goodie_id: 2917, status: "UN", amount: #<BigDecimal:8faf750,'0.122E3',9(36)>, created_at: "2016-03-04 11:37:22", updated_at: "2016-03-04 11:37:22">, #<VoucherNumber id: 567, vendor_id: 11, voucher_number: "sss", trip_id: nil, expiry_date: "2016-03-22 18:30:00", goodie_id: 2917, status: "UN", amount: #<BigDecimal:8fad7c0,'0.112E3',9(36)>, created_at: "2016-03-04 11:37:22", updated_at: "2016-03-04 11:37:22">, #<VoucherNumber id: 569, vendor_id: 11, voucher_number: "22", trip_id: nil, expiry_date: "2016-03-22 18:30:00", goodie_id: 2917, status: "UN", amount: #<BigDecimal:902d510,'0.112E3',9(36)>, created_at: "2016-03-04 11:37:22", updated_at: "2016-03-04 11:37:22">]..



But expected output is below output
[#<VoucherNumber id: 559, vendor_id: 5, voucher_number: "1", trip_id: nil, expiry_date: "2016-03-23 18:30:00", goodie_id: 2917, status: "UN", amount: #<BigDecimal:8f9b7f0,'0.122E3',9(36)>, created_at: "2016-03-04 11:37:22", updated_at: "2016-03-04 11:37:22"> #<VoucherNumber id: 567, vendor_id: 11, voucher_number: "sss", trip_id: nil, expiry_date: "2016-03-22 18:30:00", goodie_id: 2917, status: "UN", amount: #<BigDecimal:8fad7c0,'0.112E3',9(36)>, created_at: "2016-03-04 11:37:22", updated_at: "2016-03-04 11:37:22">]
VoucherNumber.where(:goodie=>2917)
[#, #, #, #]..
但预期产出低于产出
[# #]

有人能给我指出正确的方向吗?

您可以调用
uniq
方法,以确保不会两次获得相同的记录

VoucherNumber.where(:goodie=> 2917).uniq
编辑: 使用此代码:

VoucherNumber.where(:goodie=> 2917).group('goodie, vendor_id')

尝试按供应商id进行分组,然后对结果进行分组

VoucherNumber.where(:goodie=> 2917).select("DISTINCT(vendor)")
问题是

SELECT DISTINCT(vendor) FROM "voucher_numbers" WHERE "voucher_numbers"."goodie" = 2917

您可以尝试这种方法,但它只返回
vendor\u id

VoucherNumber.where(:goodie=> 2917).uniq.pluck(:vendor_id)
您可以找到使用
goodie
vendor\u id
uniq的所有商品的所有列

VoucherNumber.group("goodie,vendor_id")
对于选定的商品:

VoucherNumber.where(:goodie=> 2917).group(:vendor_id)

VoucherNumber.where(:goodie=>2917)--->这是我写的查询…在我的情况下,goodie\u id和vendor\u id应该是唯一的…我需要找到goodie\u id,然后保存vendor\u id预期输出的唯一记录:[嘿,你可以使用
VoucherNumber.group('goodie,vendor\u id'))
但我需要找到第一个带有2917的goodie id,然后过滤供应商id的唯一记录,不包括uniq。uniq也适用于group by。请更新anscheck@Sravan您正在使用
id
进行分组,这是什么意思??它返回所有记录,因为
id
uniq
,因为allI更新了我的ans,删除了按id分组,并添加了distinct,请立即检查。
VoucherNumber.where(:goodie=> 2917).group(:vendor_id)