我将从本月的order_log中选择前5名产品,其中iddate等于order_db中的列。因为每个订单可以有1个以上的产品。讲起来有点复杂,所以请参阅下面的示例。

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_idod_dtime中计算日期为当前月份的order_db。我写:

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


运行此查询后,我期望:

第10个月的前5个订单是:


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


**对于产品名称,我没有问题。

最佳答案

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

例如:您有一个表,该表具有一些属性,包括time-stamp属性,并且希望按时间降序排列

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

关于mysql - 如何从另一个表中选择当月前5行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26504968/

10-12 00:42
查看更多