這個問題與我以前的問題 - MySQL query to show records with current date on top and others as per descending order。MySQL查詢命令記錄ORDER BY
- 我現在用的是,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 IF(sale_ends = DATE(NOW()), 0, 1), sale_ends DESC
和返回的結果如下,
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
5 | 18 | 2012-04-05 | 2012-04-09
6 | 20 | 2012-02-23 | 2012-02-27
7 | 14 | 2012-02-25 | 2012-02-26
但現在我堅持的另一個問題,我需要對記錄進行排序如下所示的查詢
sales_id | category_id |sale_starts | sale_ends
----------|---------------------|------------|--------------
4 | 12 | 2012-04-05 | 2012-04-11 (today's date)
3 | 25 | 2012-03-31 | 2012-04-25
2 | 11 | 2012-03-22 | 2012-04-27
1 | 10 | 2012-03-31 | 2012-04-30
7 | 14 | 2012-02-25 | 2012-02-26 (expired/past dates)
6 | 20 | 2012-02-23 | 2012-02-27
5 | 18 | 2012-04-05 | 2012-04-09
我曾嘗試在查詢中使用ASC
而不是DESC
,但過期日期僅在今天的日期之後列出。我需要在今天的日期之後列出未來的日期,之後纔會列出過期的日期。這如何實現?
需要幫助。在此先感謝
再次感謝您的目的。 – 2012-04-11 08:40:26