【问题标题】:Get first value from in mysql [closed]从mysql中获取第一个值[关闭]
【发布时间】:2020-02-11 04:01:32
【问题描述】:

我在mysql表中有列


uid ,  valueid , date 
11 ,    23,      "2019-01-01"
11 ,    24,      "2019-02-01"
11 ,    22,      "2019-05-01"


我想要这种格式的结果

id , valueid , date
11 , 23 , "2019-01-01"

始终获取第一个值 id,即 23

【问题讨论】:

  • 你使用的规则是什么?你的意思是……按日期?
  • 只是为了确认一下,23 是否被认为是第一个值,因为它具有最早的日期?
  • 定义“第一”。除非您指定排序,否则没有有意义的“第一、第二、第三等”概念。

标签: mysql sql view datatable multiple-columns


【解决方案1】:

如果第一个值是指日期最短的那个,那么:

select t.*
from t
where t.date = (select min(t2.date) from t t2 where t2.uid = t.uid);

为了获得最佳性能,您需要在(uid, date) 上建立索引。

【讨论】:

  • 跳过从 valueid 初始获取的日期列
  • @ShubhamSeth:你能澄清一下你的意思吗?语言障碍在这里似乎非常重要。
【解决方案2】:

使用LIMIT,如:

select * from t order by date limit 1

【讨论】:

    【解决方案3】:
    with t as
    (
       select *, row_number() over (partition by uid order by date) as rn
       from your_table   
    )
    select * from t
    where rn = 1
    

    【讨论】:

    • 跳过日期栏
    • 我不明白你的意思。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-06
    • 2013-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 2012-03-25
    相关资源
    最近更新 更多