排行榜:返回5条记录,然后返回我想要的记录,然后再记录4条记录

时间:2015-03-17 10:02:26

标签: mysql

我正在构建排行榜,我希望特定用户位于返回记录的中间。

换句话说,我想要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语句。

我真的不知道我怎么会接近它!

由于

1 个答案:

答案 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  |
+----+------+