0

我有一个如下表所示的 mysql 表。

id 名称 firstDate secondDate
== ===== ========= ==========
A1 卡罗尔 2000-07-24 1956-07-24
A2 维克多 2000-07-24 1980-01-13
A3 保罗 1999-12-10 1985-01-10
A4 米娅 2000-06-17 1945-10-22
A5 卢克 2000-07-24 1960-03-19

我需要创建一个具有以下格式的视图:

  1. firstDate列升序排序。

  2. 如果两个或多个记录在firstDate列上具有相同的值,则这些记录将使用secondDate列来决定女巫记录将被放置在第一个,第二个等等。

  3. 在secondDate列之后将添加一个列排名,并带有一个连续的数字。

像这样

id 名称 firstDate secondDate 等级
== ===== ========= ========== ====
A3 保罗 1999-12-10 1985-01-10 1
A4 米娅 2000-06-17 1945-10-22 2
A1 卡罗尔 2000-07-24 1956-07-24 3
A5 路加 2000-07-24 1960-03-19 4
A2 维克多 2000-07-24 1980-01-13 5

作为

4

2 回答 2

0

尝试这个

    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;

在这里演示

于 2013-07-31T14:25:40.533 回答
0

您可以简化 echo_Me 的回答:

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

http://sqlfiddle.com/#!2/24a8d/7

于 2013-07-31T14:48:56.430 回答