Mysql 按两个日期列对视图排序,并添加排名列

Mysql 按两个日期列对视图排序,并添加排名列,mysql,sql,Mysql,Sql,我有一个类似下面的mysql表 id name firstDate secondDate == ===== ========= ========== A1 Carol 2000-07-24 1956-07-24 A2 Victor 2000-07-24 1980-01-13 A3 Paul 1999-12-10 1985-01-10 A4 Mia 2000-06-17 1945-10-22 A5 Luke 2000-07-24

我有一个类似下面的mysql表

id name firstDate secondDate == ===== ========= ========== A1 Carol 2000-07-24 1956-07-24 A2 Victor 2000-07-24 1980-01-13 A3 Paul 1999-12-10 1985-01-10 A4 Mia 2000-06-17 1945-10-22 A5 Luke 2000-07-24 1960-03-19 id名称firstDate secondDate == ===== ========= ========== A1卡罗尔2000-07-241956-07-24 A2维克多2000-07-241980-01-13 A3保罗1999-12-10 1985-01-10 A4 Mia 2000-06-17 1945-10-22 A5卢克2000-07-241960-03-19 我需要创建具有以下格式的视图:

  • firstDate列升序排序

  • 如果两个或多个记录在firstDate列上具有相同的值,则这些记录将使用secondDate列来决定将哪个记录放在第一、第二位,依此类推

  • 第二个日期列之后将添加列,该列具有连续数字

  • 像这样

    id name firstDate secondDate rank == ===== ========= ========== ==== A3 Paul 1999-12-10 1985-01-10 1 A4 Mia 2000-06-17 1945-10-22 2 A1 Carol 2000-07-24 1956-07-24 3 A5 Luke 2000-07-24 1960-03-19 4 A2 Victor 2000-07-24 1980-01-13 5 id名称firstDate第二个日期等级 == ===== ========= ========== ==== A3保罗1999-12-10 1985-01-10 1 A4 Mia 2000-06-17 1945-10-22 2 A1卡罗尔2000-07-241956-07-243 5卢克2000-07-24 1960-03-19 4 A2维克多2000-07-241980-01-13 5 作为

    试试这个

        SET @rank := 0;
        SELECT * , @rank := @rank + 1 AS rank FROM
        (
        SELECT id , name  ,  firstDate  , secondDate
        from table1
         ORDER BY firstDate  asc, secondDate asc
        ) zz
    

    还是这个

       SELECT * , @rank := @rank + 1 AS rank FROM
      (
      SELECT id , name  ,  firstDate  , secondDate
      from table1
       ORDER BY firstDate  asc, secondDate asc
       ) zz, (SELECT @rank := 0) z;
    

    你可以简化echo\u Me的回答:

    SET @rank := 0;
    SELECT id , name  ,  firstDate  , secondDate , @rank := @rank + 1 AS rank 
    FROM table1
    ORDER BY firstDate  asc, secondDate asc