1

所以我试图在我的桌子上使用 SELECT Distinct 选项

Hashlog.select("DISTINCT tag").select("created_at").order("created_at DESC").limit(10)

 1.9.3-p286 :017 > Hashlog.select("DISTINCT tag").select("created_at").order("created_at DESC").limit(10)
      Hashlog Load (0.7ms)  SELECT DISTINCT tag, created_at FROM "hashlogs" ORDER BY created_at DESC LIMIT 10
     => [#<Hashlog tag: "new", created_at: "2012-12-11 04:06:37">, 
     #<Hashlog tag: "now", created_at: "2012-12-11 04:06:33">, 
     #<Hashlog tag: "googleold", created_at: "2012-12-11 04:06:28">, 
     #<Hashlog tag: "google", created_at: "2012-12-11 04:06:26">, 
     #<Hashlog tag: "facebook", created_at: "2012-12-11 04:06:21">, 
     #<Hashlog tag: "facebook", created_at: "2012-12-11 04:06:18">, 
     #<Hashlog tag: "faceboot", created_at: "2012-12-11 04:06:15">]

所以我希望结果只在标签列上是唯一的,但它不会让我按 created_at 排序,除非它通过选择。

4

2 回答 2

4

我认为您要做的是为每个标签选择按最早(即最小)排序的不同标签值created_at。这将是解决由具有多个关联created_at值的标签引起的歧义的一种方法。

如果是这种情况,请尝试以下操作:

Hashlog.select("tag, min(created_at) as earliest").group("tag").order("earliest DESC").limit(10)

.

于 2012-12-11T06:31:59.377 回答
0

我在我的项目中使用了以下代码段

Product.select("DISTINCT(products.material_id), products.material_id, products.class_id").where('products.class_id' => current_user.class_id) 
于 2012-12-11T06:26:49.840 回答