2014-10-22 79 views
0

我要从order_log中选择本月的前5个产品,其中iddate等于order_db中的列。因为每个订单可以超过1个产品。这有点复杂,请看下面的示例。如何从另一个表中选择当前月份的前5行

order_db

+------+------+---------------------+ 
|od_id | p_id |  od_dtime  | 
+------+------+---------------------+ 
| 1 | 1 | 2014-10-01 00:00:00 | 
+------+------+---------------------+ 
| 2 | 2 | 2014-10-01 00:00:00 | 
+------+------+---------------------+ 
| 3 | 3 | 2014-10-02 00:00:00 | 
+------+------+---------------------+ 
| 4 | 4 | 2014-10-02 00:00:00 | 
+------+------+---------------------+ 
| 5 | 5 | 2014-10-03 00:00:00 | 
+------+------+---------------------+ 
. 
. 
+------+------+---------------------+ 
| 10 | 10 | 2014-10-31 00:00:00 | 
+------+------+---------------------+ 

order_log

+-------+------+ 
| pl_id | p_id | 
+-------+------+ 
| 1 | 5 | 
+-------+------+ 
| 2 | 5 | 
+-------+------+ 
| 3 | 5 | 
+-------+------+ 
| 4 | 2 | 
+-------+------+ 
| 5 | 1 | 
+-------+------+ 
. 
. 
. 
+-------+------+ 
| 10 | 1 | 
+-------+------+ 

所以我需要算product_id其中date是在当月从order_dbod_dtime。我写道:

SELECT * FROM order_log WHERE p_id IN 
(SELECT p_id FROM order_db WHERE month(bk_dtime)='10') 

运行此查询后,我想到:

前5个订单月10的分别是:

  1. 产品3(3级)
  2. 产品1( 2个订单)
  3. 产品2(1个订单)

**为产品名称我没有问题。

回答

0

如果要从数据库中选择前5行,可以使用以下sql查询。

为例如:你有一些属性表,包括时间戳属性,要在时间

SELECT * FROM table_name where acc_id='2' order by time desc limit 0 , 5 
+0

对不起降序订购,你的答案是从现实太远。 – Wilf 2014-10-22 14:14:47

+0

请纠正我错在哪里。提前致谢。 – 2014-10-24 06:10:48

相关问题