如果项目已排序,是否可以运行select语句并获取行号?
我有一张这样的桌子:
mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| itemID | bigint(20) unsigned | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
然后,我可以运行此查询以按ID获取订单数量:
SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
这样,我就可以itemID
对表格中的每个表格进行计数:
+--------+------------+
| itemID | ordercount |
+--------+------------+
| 388 | 3 |
| 234 | 2 |
| 3432 | 1 |
| 693 | 1 |
| 3459 | 1 |
+--------+------------+
我也想获得行号,所以我可以知道那itemID=388
是第一行,234
第二行,等等(本质上是订单的排名,而不仅仅是原始计数)。我知道当我返回结果集时可以在Java中执行此操作,但是我想知道是否有一种方法可以纯粹在SQL中处理它。
更新资料
设置等级会将其添加到结果集中,但顺序不正确:
mysql> SET @rank=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount
-> FROM orders
-> GROUP BY itemID ORDER BY rank DESC;
+------+--------+------------+
| rank | itemID | ordercount |
+------+--------+------------+
| 5 | 3459 | 1 |
| 4 | 234 | 2 |
| 3 | 693 | 1 |
| 2 | 3432 | 1 |
| 1 | 388 | 3 |
+------+--------+------------+
5 rows in set (0.00 sec)
看看这个。
将查询更改为:
SET @rank=0;
SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID
ORDER BY ordercount DESC;
SELECT @rank;
最后选择是您的数量。
问题内容: 如何在ng-grid中创建(或访问)选定行的数组? 文档(滚动到“网格选项”) index.html main.js Plnkr代码(并运行它) 问题答案: 根据文档,应该是的属性,因此请尝试以下操作: 控制者 的HTML
问题内容: 我有一张桌子 我填写这个表 选择idFolder = 1的文件夹时,应返回该文件夹和子子文件夹的所有子文件夹(2,3,4,5,6,7) 当我选择文件夹ID = 4 ==>(5,7,6) 当我选择文件夹ID = 3 ==>(4,5,6,7) 一个查询该怎么做? 谢谢 问题答案: 这是工作中的一个 在此处查看SQL固件:http://sqlfiddle.com/#!2 / 02b78 /
在MySql表中拥有以下数据: 我想选择唯一的unit_code(unit_code可以在表中的unit_code列中出现几次),日期为最大值且日期等于或小于今天的金额和日期。我在努力,但还没有接近结果。
本文向大家介绍MySQL LIMIT选择单行,包括了MySQL LIMIT选择单行的使用技巧和注意事项,需要的朋友参考一下 要在MySQL中选择一行,可以使用LIMIT。首先,让我们创建一个表。创建表的查询如下- 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出- 这是使用LIMIT从表中选择一行的查询- 以下是输出-
问题内容: 我有一个mysql问题。 我的网站上有一个新闻版块,我想显示两个最新项目。如果我做: 它选择了最新的项目,现在我要选择倒数第二个项目。 你们知道怎么做吗? /// 编辑 现在它不起作用了,这是我的代码:(我已经包含了;)) 问题答案: -选择最后2个项目 -仅选择第二项
我有一个名为“survey_product”的表,其结构如下: 此表存储通过系统订购的产品。 下面是该表中的一些数据记录: 以上我们有3个订单(订单号2、3和4)。 我需要获取product\u id=21但product\u id=20的所有订单的order\u id(订单中的其他product\u id不相关-我只对21和20感兴趣)。 然后我需要知道product\u id为20和21的订单