mysql - SQL/js - 选择 X 值 WHERE Y
问题描述
我正在学习如何编码,并且我有一个名为的表locations
,如下所示:
ID | 姓名 | X | 创建者 ID |
---|---|---|---|
1 | 名称1 | 323 | 5 |
2 | 名称2 | 213 | 5 |
3 | 名称3 | 563 | 5 |
4 | 名称4 | 754 | 2 |
5 | 名称5 | 424 | 3 |
6 | 名称6 | 634 | 4 |
7 | 名称7 | 633 | 5 |
我想选择 X 为 X 的行号creatorId
X。例如,我想选择 creatorId 为 5 的第二行(第 2 行)。
如果我使用以下查询,我可以访问 WHEREcreatorId
为 5 的所有行:
SELECT * FROM locations WHERE creatorId = @playerId
结果:
ID | 姓名 | X | 创建者 ID |
---|---|---|---|
1 | 名称1 | 323 | 5 |
2 | 名称2 | 213 | 5 |
3 | 名称3 | 563 | 5 |
7 | 名称7 | 633 | 5 |
我在 javascript 中使用它,所以选择也可以在 js 中。字符串化后的 javascript 数组如下所示:
[
{"id":1, "name":"name1", "X":323, "creatorId":5}
{"id":2, "name":"name2", "X":213, "creatorId":5}
{"id":3, "name":"name3", "X":563, "creatorId":5}
{"id":7, "name":"name7", "X":633, "creatorId":5}
]
我的 SQL 版本是 MariaDB。
谢谢!
解决方案
使用排名函数
SELECT id , name, X , creatorId
FROM(
SELECT id , name, X , creatorId, RANK() OVER (PARTITION BY creatorId ORDER BY id) rn
FROM #location
WHERE creatorId=5)t where rn=2
推荐阅读
- arrays - VBA:如何将几列合并为 1 ?我当前的代码有效,但只有 <450 行
- python - 如何检查是否使用检查设置了python函数参数的默认值?
- reactjs - 使用无服务器函数通过 Mongoose 在 MongoDB 数据库中查找 ById,并以 React 形式呈现结果 - 不工作
- asp.net-core - Neo4j 4 和 .NET Core 身份框架
- firebase - 如何从 Firebase 云存储中删除图像
- ruby-on-rails - Ruby ActiveRecord has_many 没有运行 Join
- java - 如何在引用外部组件时将“$ref”中的 http url 设置为动态的 URL 引用和特定于环境的 swagger yaml 文件?
- python - 加载 psycopg2 模块时出错:导入 _psycopg 时 DLL 加载失败:找不到指定的模块
- html - IE 中的 object-fit 属性的 html/css 问题
- php - 当 div #firstpage 设置为隐藏时,为什么我的 div #firstpage 显示在我的 div #lastpage 上?