【问题标题】:How to write MySql query with multiple data orders?如何编写具有多个数据顺序的 MySql 查询?
【发布时间】:2011-11-03 21:32:16
【问题描述】:

我正在为一个组织处理申请。 这里我在数据库表中有一些事件。现在客户对其视图的要求如下。

  1. 第一个事件应该是今天的事件(如果有的话)
  2. 那么即将发生的事件应该从今天开始。就像今天一样 01-11-2011 那么下一个事件应该是 02-11-2011(如果有的话) 下一个应该是 03-11-2011 等等....
  3. 列出所有即将发生的事件后,您可以显示旧的 事件。

我只是想知道我是否可以在一个查询中完成这项任务。你能建议我一些查询吗?

这是表结构。

目前我有这个查询。

SELECT * FROM tbl_event ORDER BY event_date DESC;

此应用在Codeignitor框架中,MySql为数据库类型。

【问题讨论】:

  • 这就是现代开发人员的工作方式——首先得到这份工作,然后在 stackoverflow 上询问如何去做。

标签: php mysql sql codeigniter


【解决方案1】:
SELECT ...
...
ORDER BY (event_date = curdate()) DESC,    // today's events
     (event_date > curdate()) DESC, // future events
     event_date DESC; // past events

【讨论】:

    【解决方案2】:

    可能是这样的吗?

    SELECT * FROM tbl_event ORDER BY event_date DESC WHERE DATE(event_date) = DATE(NOW()) UNION SELECT * FROM tbl_event ORDER BY event_date DESC WHERE event_date >= NOW() UNION SELECT * FROM tlb_event ORDER_BY event_date DESC WHERE event_date < NOW()
    

    【讨论】:

    • 我喜欢这个查询,但我没有这个字段的数据类型 datetime。您能否建议我解决此数据类型的其他问题?在此先感谢:)
    • 只需将所有 event_date 和 now() 包含在日期函数中,如下所示:DATE(even_date)DATE(NOW())
    • 谢谢你,你刚赚了一顿午餐。需要的时候告诉我。:)
    猜你喜欢
    • 2020-06-26
    • 2018-09-10
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2018-12-06
    • 2011-09-13
    相关资源
    最近更新 更多