MySQL命令2列(数据/频率)

时间:2012-11-08 08:59:42

标签: mysql

我有一个包含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天) 而不是按分离结果的频率(内部间隔和所有其他)的顺序

1 个答案:

答案 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

对于那些试图帮助的人!谢谢