ORDER BY的MySQL查询
我对MySQL有点生疏了。我需要一些人帮我搞定订单 我需要按类型排序,然后按组行日期最高的组排序,然后按日期排序每个组。 我需要进行一个查询,以按最早日期对组行进行排序。然后,我需要在该组中的最高日期之前对每个组进行订购。还有一件事。所有行都是一种类型,但每个组行都具有相同的类型 这是一个无组织表格的可视化表示ORDER BY的MySQL查询,mysql,sql,sql-order-by,Mysql,Sql,Sql Order By,我对MySQL有点生疏了。我需要一些人帮我搞定订单 我需要按类型排序,然后按组行日期最高的组排序,然后按日期排序每个组。 我需要进行一个查询,以按最早日期对组行进行排序。然后,我需要在该组中的最高日期之前对每个组进行订购。还有一件事。所有行都是一种类型,但每个组行都具有相同的类型 这是一个无组织表格的可视化表示 | DATE | GROUP | TYPE | ----------------------- | 2007 | 2 | 1 | | 2008 | 3 | 2
| 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。按降序排序日期,如下所示:
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 |
从表中派生每个块的最高日期行集,然后将其连接回表,以使用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
;
这里的主要问题是它对组进行排序,但不按每个组中的最高行日期对组进行排序。@alrightgame-您所说的每个组中的最高行日期是什么意思?因为在组中,排序方式必须确保具有最新日期的组是第一个,依此类推,等等。@alrightgame-那么对于给定的数据,您希望得到什么结果呢?我想我在这里撒了个小谎;我试图组织的组是一个字符串,而不是一个数字。这可能很重要,因为它是按字母顺序而不是按日期排序的。请给我们您想要看到的输出。这非常接近,我昨天几乎得到了这个答案(我唯一缺少的顿悟是内部连接)。所需的只是更改顺序:按t.settype、s.highest desc、t.releasedate desc、t.block排序