MySQL是否有一种很好的方式来复制SQL Server功能ROW_NUMBER()?
例如:
SELECT
col1, col2,
ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow
FROM Table1
Run Code Online (Sandbox Code Playgroud)
然后,我可以,例如,添加一个限制intRow为1 的条件,以获得col3每(col1, col2)对最高的单行.
使用以下MySQL表:
+-----------------------------+
+ id INT UNSIGNED +
+ name VARCHAR(100) +
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)
如何排序时,如何选择单个行及其在表中其他行中的位置name ASC.因此,如果表数据如下所示,则按名称排序时:
+-----------------------------+
+ id | name +
+-----------------------------+
+ 5 | Alpha +
+ 7 | Beta +
+ 3 | Delta +
+ ..... +
+ 1 | Zed +
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)
如何选择Beta获取该行当前位置的行?我正在寻找的结果集是这样的:
+-----------------------------+
+ id | position | name +
+-----------------------------+
+ 7 | 2 | Beta +
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)
我可以做一个简单的SELECT * FROM tbl ORDER BY name ASC然后枚举PHP中的行,但是为一行加载一个可能很大的结果集似乎很浪费.
假设我有这样的SQL查询:
SELECT id, name, index(not a real column) FROM users ORDER BY rating DESC
Run Code Online (Sandbox Code Playgroud)
我想将列添加到将代表记录索引的选定列.
例:
id name rating
1 a 4
2 b 2
3 c 8
4 d 5
Run Code Online (Sandbox Code Playgroud)
对于这个表我想得到:
id name rating index
3 c 8 1
4 d 5 2
1 a 4 3
2 b 2 4
Run Code Online (Sandbox Code Playgroud) 假设我有一个包含以下列的表:
P_ID
用户身份
点
假设这些列有超过5000条记录.所以我们实际上有用户点.每个用户的点记录都有一个唯一的行.想象一下,每个用户都可以点击某个地方在网站上获得积分.当他们点击时,我用他们得到的积分更新数据库.
所以我们有一张桌子,里面有5000多个有积分的记录,对吧?现在我想通过他们的点(降序)来命令它们,所以如果我运行MySQL查询,那么具有最多点的用户将位于页面的顶部.
我可以通过简单地运行这样的查询来做到这一点:
SELECT `p_id` FROM `point_table` ORDER BY `points` DESC
Run Code Online (Sandbox Code Playgroud)
此查询将按点按降序向我提供所有记录.
好的,这里我的问题来了,现在(当订购时)我想向每个用户显示它们实际上是哪个地方.所以我想给每个用户这样的话:"你是5374个用户中的623个".问题是我不能指定"623"号码.
我想运行一个查询,它按顺序对表进行 "搜索"或计算行号,在那里他们的记录是,然后将该值返回给我.
任何人都可以帮我如何为此建立一个查询?这将是一个非常大的帮助.谢谢.
给定一个rating在MySQL数据库中命名的表.
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| rating_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| prod_id | bigint(20) unsigned | YES | MUL | NULL | |
| rating_num | int(10) unsigned | YES | | NULL | |
| ip_address | varchar(45) | YES | | NULL | |
| row_version | bigint(20) unsigned | NO | | 0 | | …Run Code Online (Sandbox Code Playgroud) 除了MYSQL中的行数据之外,获得行级别的最佳方法是什么?
例如,假设我有一份学生名单,我想在GPA中排名.我知道我可以通过GPA订购,但是有什么最快的方式让MYSQL在我回来的rowdata中返回等级?
首先,我尝试用谷歌搜索,但是只想出了这样的答案: MySQL-在选择时获取行号
我需要的是“通过特定ID获取行位置”。
在上面的链接示例中,我尝试添加“ WHERE CLAUSE”,但是“ rank”的结果始终为1。
因此,如果我的表具有自动递增的id字段,并且没有按照特定的顺序排列(例如,在id 1变为3而不是2之后,因为id 2已从数据库中删除),如何获取例如id 4的位置?
有什么可能的方法,我想要什么?