【问题标题】:MySQL query to show records with current date on top and others as per descending orderMySQL查询以显示当前日期在顶部的记录和其他按降序排列的记录
【发布时间】:2012-04-23 10:52:40
【问题描述】:

我在我的数据库中使用以下查询,

SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
FROM tbl_sales b WHERE b.active=1 
UNION
SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
FROM tbl_sales b INNER JOIN tb_category c ON  b.category_id=c.cat_id 
WHERE c.cat_keyword LIKE 'a' ORDER BY sale_ends  DESC

得到如下结果,

sales_id  | category_id         |sale_starts | sale_ends 
----------|---------------------|------------|--------------
 1        |   10                | 2012-03-31 | 2012-04-30     
 2        |   11                | 2012-03-22 | 2012-04-27
 3        |   25                | 2012-03-31 | 2012-04-25
 4        |   12                | 2012-04-05 | 2012-04-11

现在我需要得到如下结果,即具有today's date/current date assale_ends 的行必须显示在订单的顶部(假设今天的日期/当前日期为2012-04-11),如下所示-

sales_id      | category_id         |sale_starts | sale_ends 
    ----------|---------------------|------------|--------------
     4        |   12                | 2012-04-05 | 2012-04-11 (today's date)
     1        |   10                | 2012-03-31 | 2012-04-30     
     2        |   11                | 2012-03-22 | 2012-04-27
     3        |   25                | 2012-03-31 | 2012-04-25

在这方面需要帮助,在此先感谢。

【问题讨论】:

    标签: php mysql date sql-order-by


    【解决方案1】:

    试试这个带条件的 ORDER BY 子句 -

    ORDER BY IF(sale_ends = DATE(NOW()), 0, 1), sale_ends DESC
    

    【讨论】:

      【解决方案2】:

      您可以将整个内容包装在另一个 SELECT 中并使用 ORDER BY

      SELECT * FROM (     
           SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
           FROM tbl_sales b WHERE b.active=1 
           UNION
           SELECT b.sales_id,b.category_id,b.sale_starts,b.sale_ends 
           FROM tbl_sales b INNER JOIN tb_category c ON  b.category_id=c.cat_id 
           WHERE c.cat_keyword LIKE 'a' ORDER BY sale_ends  DESC
      ) AS all_sales
      ORDER BY (sale_ends=CURDATE()) DESC, sale_ends DESC
      

      【讨论】:

        猜你喜欢
        • 2019-06-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-22
        • 2016-08-03
        • 1970-01-01
        • 2011-09-06
        相关资源
        最近更新 更多