代码之家  ›  专栏  ›  技术社区  ›  Ryan

mysql选择min(time),其中date col为min(date)

  •  -1
  • Ryan  · 技术社区  · 6 年前

    我正在尝试选择日期为m in(日期)的m in(时间),有人能给我指出正确的方向吗?

    沿着这条线,但这不起作用。

    select Min(timecol) as MinTime from myTable where daycol = '1' and datecol = min(datecol)
    
    daycol     datecol         timecol
       1     16/01/2019        08:30:00
       1     17/01/2019        01:30:00
       1     16/01/2019        12:30:00
       1     18/01/2019        12:30:00
       2     16/01/2019        08:30:00
    
    4 回复  |  直到 6 年前
        1
  •  -1
  •   Dougie    6 年前
    SELECT min(a.timecol), a.datecol, a.daycol FROM `timetable` a 
      WHERE a.datecol = (
          SELECT min(b.datecol) from `timetable` b
      )
    

    这将返回2019年1月16日08:30行。

        2
  •  0
  •   Trung    6 年前

    你可以试试:

    select timecol as MinTime from myTable where daycol = '1' order by datecol ASC limit 1
    
        3
  •  0
  •   Adrian Maxwell    6 年前

    应该这样做:

    SELECT
        MIN( timecol ) AS MinTime
    FROM myTable
    WHERE daycol = '1'
    AND datecol = (
        SELECT
            MIN( datecol )
        FROM myTable
        WHERE daycol = '1'
    )
    ;
    

    如果运行的是MySQL8或更高版本(或任何支持DB的窗口函数),则:

    SELECT
        daycol, datemin, timemin
    FROM (
        SELECT
            *
          , MIN( datecol ) OVER (PARTITION BY daycol) datemin
          , MIN( timecol ) OVER (PARTITION BY daycol, datecol) timemin
        FROM myTable
    ) d
    WHERE daycol = '1'
    AND datecol = datemin
    AND timecol = timemin
    
        4
  •  -1
  •   florex    6 年前

    这将给出日期列最小的时间列的最小值。 从myTable中选择min(timecol)作为mintime,其中datecol=(从myTable中选择min(datecol));

    确保timecol和datecol分别为日期和时间类型。