【问题标题】:Ordering and grouping MySQL data对 MySQL 数据进行排序和分组
【发布时间】:2011-05-13 13:16:53
【问题描述】:
+----+------------------+-----------------+ |编号 |模板类型 ID |网址 | +----+------------------+-----------------+ | 1 | 1 |正文 | | 2 | 2 |正文 | | 3 | 1 |正文 | | 4 | 1 |正文 | | 5 | 1 |正文 | | 6 | 1 |正文 | | 7 | 1 |正文 | | 8 | 1 |正文 | | 9 | 2 |正文 | | 10 | 2 |正文 | +----+------------------+-----------------+

由于我使用的是 1 页模板和 2 页模板,我需要按照 1 页和 2 页重新排序上述结果,如下所示:

+----+------------------+-----------------+ |编号 |模板类型 ID |网址 | +----+------------------+-----------------+ | 1 | 1 |正文 | | 3 | 1 |正文 | | 2 | 2 |正文 | | 4 | 1 |正文 | | 5 | 1 |正文 | | 6 | 1 |正文 | | 7 | 1 |正文 | | 9 | 2 |正文 | | 10 | 2 |正文 | | 8 | 1 |正文 | +----+------------------+-----------------+ +--------------------------------------------+ ---------------------- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---------------------- +--------------------------------------------+

【问题讨论】:

  • 第二个示例似乎根本没有排序,除非有一些其他未显示的数据是排序规则的一部分。
  • 我需要根据第二个结果按 template_type_id 对 1 个页面模板和 2 个页面模板进行分组。你可以考虑已经有 publish_date 和它排序的第一个结果..
  • 您应该将 publish_date 数据添加到您的示例中,以便我们了解它如何影响排序。
  • @jit 真的不清楚您希望如何分组 - 您想要的结果看起来没有原始数据那么有序。也许值得包括您已经尝试过的选项?
  • 我想一次在 2 页杂志中显示这个..意味着一次显示两个 1 页模板或一个 2 页模板。但按第二个指定的顺序。如果您从第一个和第二个结果中检查 id 列,您观察到如果 1 个记录是 1 个页面模板,我想获取下一个 1 个页面记录,然后跟随第二个记录,因为它是结果 2 中给出的两个页面模板。

标签: group-by sql-order-by


【解决方案1】:

假设表中有没有显示的publish_date列,并且其中的值与示例1和示例2中的记录顺序一致,我建议:

order by publish_date, template_type_id

【讨论】:

  • 没用...假设 publish_date 对所有人都是一样的。我想一次显示 2 页...意味着一次两个 1 页或一个 2 页模板..
  • 那么,第二个表的逻辑排序规则是什么?能不能用简单的英文表达一下,让我们试着翻译成SQL?
  • 我想一次在 2 页杂志中显示这个..意味着一次显示两个 1 页模板或一个 2 页模板。但按第二个指定的顺序。如果您从第一个和第二个结果中检查 id 列,您观察到如果 1 个记录是 1 个页面模板,我想获取下一个 1 个页面记录,然后跟随第二个记录,因为它是结果 2 中给出的两个页面模板。
  • 如果这是要求,我看不到除了 MySQL 复合语句之外的任何可能性。您可以在此表上打开两个光标,一个用于 1 页模板,第二个用于 2 页,均按发布日期或 ID 排序,然后循环遍历它们以适当地填写 2 页杂志跨页。
  • 我们可以像上面所说的那样用两个光标来做这个,并为结果创建一个视图,并使用该视图来显示结果 2,因为我还需要进行分页...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-07
  • 1970-01-01
  • 2016-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多