Java 如何从表中选择前五名产品
现在,我想找到特定月份最畅销的5种产品。我也有发票注册表,所以我可以获得特定月份的“iId”。我的问题是如何为给定的iId选择前5种产品。proID可以相同或不同[通常不同]。top表示最大数量。所以我想要前5种[数量]的产品idproID.我试图编写mysql查询,但失败了Java 如何从表中选择前五名产品,java,mysql,Java,Mysql,现在,我想找到特定月份最畅销的5种产品。我也有发票注册表,所以我可以获得特定月份的“iId”。我的问题是如何为给定的iId选择前5种产品。proID可以相同或不同[通常不同]。top表示最大数量。所以我想要前5种[数量]的产品idproID.我试图编写mysql查询,但失败了 +-------+-----+-------+----------+-------+ | iniid | iID | price | quentity | proID | +-------+-----+-------+--
+-------+-----+-------+----------+-------+
| iniid | iID | price | quentity | proID |
+-------+-----+-------+----------+-------+
| 42 | 16 | 20 | 30 | 4001 |
| 43 | 16 | 20 | 30 | 4001 |
| 44 | 16 | 20 | 30 | 4002 |
| 45 | 16 | 20 | 30 | 4002 |
| 46 | 17 | 20 | 1 | 4001 |
| 47 | 17 | 20 | 1 | 4003 |
| 48 | 17 | 20 | 1 | 4005 |
| 49 | 17 | 20 | 1 | 4001 |
| 50 | 17 | 20 | 1 | 4009 |
| 51 | 17 | 20 | 1 | 4002 |
| 52 | 17 | 20 | 1 | 4001 |
| 53 | 17 | 20 | 1 | 4005 |
| 54 | 17 | 20 | 1 | 4008 |
| 55 | 17 | 20 | 1 | 4008|
| 56 | 17 | 20 | 1 | 4007 |
| 57 | 17 | 20 | 1 | 4000 |
| 58 | 18 | 20 | 2 | 4005 |
| 59 | 18 | 20 | 2 | 4002 |
| 60 | 18 | 20 | 2 | 4003 |
| 61 | 18 | 20 | 2 | 4003 |
| 62 | 18 | 20 | 2 | 4009 |
| 63 | 18 | 20 | 2 | 4003 |
| 64 | 18 | 20 | 2 | 4002 |
MySQL使用LIMIT而不是TOP。只需订购您的quentity field DESC,您将获得quentity最高的前5项记录:
请注意,有可能你的第五个结果是平局。如果需要考虑关系,可以使用用户定义的变量
根据您的编辑,您希望对quentity字段求和,然后将结果排序为最高的求和数量
SELECT *
FROM Invoice
WHERE iID>15
ORDER BY quentity DESC
LIMIT 5
@sgedded问题是我想找到数量最多的前5个产品。proID是产品id。根据您的回答,这将给我所有最高数量。@PiumiWandana-根据您的编辑,我编辑了我的回复。听起来你是在找总和。
SELECT *
FROM Invoice
WHERE iID>15
ORDER BY quentity DESC
LIMIT 5
SELECT proId, SUM(quentity)
FROM Invoice
WHERE iID > 15
GROUP BY proId
ORDER BY 2 DESC
LIMIT 5