首页 > 解决方案 > 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 的行号creatorIdX。例如,我想选择 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。

谢谢!

标签: mysqlmariadb

解决方案


使用排名函数

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

推荐阅读