【问题标题】:Find lowest value and coresponding code on asingle query mysql在单个查询mysql上查找最小值和相应的代码
【发布时间】:2014-06-17 06:23:40
【问题描述】:

我有一个用户表如下

id   name      age

1    John      21

2.   Mathan    23

3.   Raj       21

4.   Manoj     50

5    Krishnan  91 

我想查找最小年龄及其对应的名称。我怎样才能用 Rails 做到这一点?

我可以在一个查询中完成吗?

注意:多个名字可以有一个年龄。

【问题讨论】:

  • 您对当前数据的预期输出是什么?
  • 我要查找最小年龄及其对应的名字
  • 这里的最低年龄是 21 岁,这个年龄包含 John 和 Raj 意味着你想要这两个名字吗?
  • @Sadikhasan - o/p 类似于 [{"John"=>"21"},{"Raj"=>"21"}]

标签: mysql sql ruby-on-rails ruby-on-rails-4


【解决方案1】:

您是否有特定原因要在单个查询中执行此操作?

如果你能写2个查询,我想你可以写:

User.where age: User.minimum(:age)

【讨论】:

    【解决方案2】:
    select age, group_concat(name) from table group by age order by age asc limit 1
    

    稍后您将需要在 ruby​​ 中处理结果,但这在一个查询中提供了您所需的一切。我也假设 mysql,所以在其他 rdbms 上可能会有所不同。

    【讨论】:

      【解决方案3】:

      它在 mysql 中给出了你想试试这个的准确输出

      SELECT concat("[",name," ",age,"]") AS name
      FROM TABLE
      WHERE age =
          (SELECT min(age)
           FROM TABLE);
      

      【讨论】:

      • 你最初添加的 d 是正确的。我需要 Rails 控制台查询。但它只给出了一个条目。第一次出现的最小年龄
      • 我给mysql查询你必须在rails中转换。它在mysql中是否有效?
      猜你喜欢
      • 1970-01-01
      • 2017-03-19
      • 2012-12-03
      • 1970-01-01
      • 2013-04-27
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      相关资源
      最近更新 更多