0

我对 MySQL 有点生疏。我需要一些帮助来确定订单。

我需要按类型排序,然后按组行日期最高的组排序,然后按日期排序每个组。我需要进行一个查询,该查询将按最高日期对一组行进行排序。然后,我需要按该组中的最高日期对每个组进行排序。还有一件事。所有行都是一个类型,但每个组行具有相同的类型。

这是一个无组织表格的可视化表示

| DATE | GROUP | TYPE |
-----------------------
| 2007 |     2 |    1 |
| 2008 |     3 |    2 |
| 2005 |     3 |    1 |
| 2004 |     2 |    1 |
| 2003 |     3 |    1 |
| 2012 |     3 |    2 |
| 2011 |     1 |    3 |

这组织了:

| DATE | GROUP | TYPE |
-----------------------
| 2007 |     2 |    1 |
| 2004 |     2 |    1 |
| 2005 |     3 |    1 |
| 2003 |     3 |    1 |
| 2012 |     3 |    2 |
| 2008 |     3 |    2 |
| 2011 |     1 |    3 |

我尝试按类型、组和日期对其进行排序,但这是不准确的。我不完全确定。

这是一组样本数据:

| ID |               SET |             BLOCK | SHORTNAME | RELEASEDATE | SETTYPE |
----------------------------------------------------------------------------------
|  1 | Return to Ravnica | Return to Ravnica |       rtr |  2012-09-29 |       1 |
|  2 |         Gatecrash | Return to Ravnica |      NULL |  2013-02-01 |       1 |
|  3 |      Dragons Maze | Return to Ravnica |      NULL |  2013-05-03 |       1 |
|  4 |   Avacyn Restored |         Innistrad |       avr |  2012-05-04 |       1 |
|  5 |    Dark Ascension |         Innistrad |       dka |  2012-02-03 |       1 |
|  6 |         Innistrad |         Innistrad |       isd |  2011-09-30 |       1 |
|  7 |      New Phyrexia | Scars of Mirrodin |       nph |  2011-05-13 |       1 |
|  8 | Mirrodin Besieged | Scars of Mirrodin |       mbs |  2011-02-04 |       1 |
|  9 | Scars of Mirrodin | Scars of Mirrodin |       som |  2010-10-01 |       1 |

group 是 block,type 是 settype,date 是 release 日期。

我需要块内按日期排序的所有块行,按该块内最高日期行排序的每组块行,以及 settype。

4

2 回答 2

0

从您的表中导出每个块的最高日期的行集,然后将其连接回您的表以使用 ORDER BY 子句中的最高日期:

SELECT
  t.*
FROM atable t
INNER JOIN (
  SELECT
    Block,
    MAX(ReleaseDate) AS HighestDate
  FROM atable
  GROUP BY Block
) s ON s.Block = t.Block
ORDER BY
  s.HighestDate,
  t.SetType,
  t.Block,
  t.ReleaseDate
;
于 2012-12-17T09:37:33.350 回答
0

订单日期按降序排列,如下所示:

SELECT * FROM Table1
ORDER BY type, `group`, `date` desc

结果:

| DATE | GROUP | TYPE |
-----------------------
| 2007 |     2 |    1 |
| 2004 |     2 |    1 |
| 2005 |     3 |    1 |
| 2003 |     3 |    1 |
| 2012 |     3 |    2 |
| 2008 |     3 |    2 |
| 2011 |     1 |    3 |

看到这个 SQLFiddle

于 2012-12-17T06:33:02.693 回答