我正在构建排行榜,我希望特定用户位于返回记录的中间。
换句话说,我想要5个更高的得分用户,然后我想要的用户在中间,然后接下来的4个更低的用户:
**users:**
User, Score
Rita, 9
Sue, 8
Bob, 7
Bill, 6
Sam, 5
**ME, 4** <-- This would be the user I want in the middle.
Sally, 3
Simon, 2
John, 1
Jim, 0
我可以在PHP中完成它,但只是想尝试使用更优雅的SQL语句。
我真的不知道我怎么会接近它!
由于
答案 0 :(得分:0)
要考虑的事情:
SELECT id,name FROM my_table;
+----+---------+
| id | name |
+----+---------+
| 1 | Adam |
| 2 | Ben |
| 3 | Charlie |
| 4 | Adam |
| 5 | Ben |
| 6 | Dan |
+----+---------+
SELECT * FROM
(SELECT id,name FROM my_table ORDER BY id LIMIT 2) x
UNION
(SELECT id,name FROM my_table ORDER BY id DESC LIMIT 2);
+----+------+
| id | name |
+----+------+
| 1 | Adam |
| 2 | Ben |
| 6 | Dan |
| 5 | Ben |
+----+------+