我有一个favorite
有 4 列的表
employee_id
product_id
frequency
last_consumed_date
现在我得到了最高的 6 行,frequency
最少employee_id
有frequency
6 行。
employee_id
以1为例
SELECT * FROM `favorites`
WHERE `employee_id` = 1
AND `frequency` >= 6
ORDER BY `frequency` DESC LIMIT 0,6
到现在为止还挺好!
但是现在我想last_consumed_date
在一个月(30天)内更喜欢这些行,所以我必须做一些事情:
DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= `lastchanged`
这是一个表格示例,以使其更清楚
表格已填充:
1 5 11 2012-10- 3
1 13 8 2012-11- 7
1 18 20 2012- 9-25
1 42 10 2012-11- 3
1 28 15 2012-10-17
1 9 7 2012-10- 8
1 64 9 2012-11- 1
2 24 8 2012- 8-28
2 12 5 2012-10-16
2 5 12 2012-11-11
Today is 2012-11- 8
30 days back 是2012-10- 9
SQL 后返回的 Table:
1 28 15 2012-10-17 <Sorted by 30 days interval and frequency>
1 42 10 2012-11- 3
1 64 9 2012-11- 1
1 13 8 2012-11- 7
1 18 20 2012- 9-25 <Sorted by frequency>
1 5 11 2012-10- 3
现在的问题是,我如何在 1 个查询中订购这 2 个东西?首先是按日期排序(间隔 30 天),然后是按单独结果的频率排序(间隔内和所有其他)