我有一个包含4列的favorite
表
employee_id
product_id
frequency
last_consumed_date
现在我获得frequency
的最高employee_id
的6行,其中frequency
的最小值为employee_id
。
SELECT * FROM `favorites`
WHERE `employee_id` = 1
AND `frequency` >= 6
ORDER BY `frequency` DESC LIMIT 0,6
1
last_consumed_date
到目前为止一切顺利!
但是如果DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= `lastchanged`
在一个月(30天)内,我现在想要更喜欢行,所以我必须做一些事情:
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
这是一个表格示例,以使其更清楚 表格填写:
2012-11- 8
今天是2012-10- 9
30天后退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
在SQL之后返回表:
{{1}}
现在的问题是,如何在1个查询中订购这两件事? 首先按日期排序(间隔30天) 而不是按分离结果的频率(内部间隔和所有其他)的顺序
答案 0 :(得分:2)
哦,我想我通过试错^ v ^
找到了答案SELECT * FROM `favorites`
WHERE `employee_id` = 1
AND `frequency` >= 6
ORDER BY (DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= `lastchanged`) DESC,
`frequency` DESC
LIMIT 0,6
对于那些试图帮助的人!谢谢