我有以下SQL查询。
SELECT
us.foo,
us.user_id_2,
(
SELECT COUNT(*)
FROM my_table x
WHERE x.foo >= us.foo
AND x.user_id_2 = 53
) AS position
FROM my_table us
WHERE us.user_id_1 = 53
ORDER BY position;
这给了我这样的结果:
|
foo
|
用户_id_2
|
位置
|
|
42
|
687
|
0
|
|
40
|
9832
|
1.
|
|
39
|
12
|
2.
|
|
...
|
...
|
...
|
这可以解释如下:用户
687
是用户的第一个匹配项
53
带分数
42
使用者
9832
是第二场有比分的比赛
49
等等
我的问题是用户
53
在查询中进行了硬编码。
我需要中每个用户的结果
users
桌子
更准确地说,我想要这样的东西:
|
foo
|
用户_id_1
|
用户_id_2
|
位置
|
|
42
|
53
|
687
|
0
|
|
40
|
53
|
9832
|
1.
|
|
39
|
53
|
12
|
2.
|
|
...
|
...
|
...
|
...
|
|
193
|
12
|
53
|
0
|
|
175
|
12
|
9832
|
1.
|
|
...
|
...
|
...
|
...
|
我基本上想要的是反复
SELECT id FROM users
用那个id代替我的硬编码
53
根据我的查询。
订购在这里并不重要。我正在使用MariadDb 10.3。
我该怎么做?
的结构
my_table
是
|
用户_id_1
|
用户_id_2
|
foo
|
|
53
|
687
|
42
|
|
687
|
53
|
42
|
|
53
|
9832
|
40
|
|
9832
|
53
|
40
|
|
53
|
9832
|
39
|
|
9832
|
53
|
39
|
|
...
|
...
|
...
|