我对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 |
组是块,类型是settype,日期是发布日期。
我需要在块中按日期排序的所有块行,每个块行按该块中的最高日期行排序,并且settype。
答案 0 :(得分: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 |
答案 1 :(得分: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
;