我的情况是这样的: 我有2个mysql表:用户和得分。
表用户就像:id,name。 表得分就像:id,point,user_id;
我想取10个用户获得高分的名称,但我不知道我必须使用哪种查询。有人可以帮帮我吗?
答案 0 :(得分:4)
最简单的答案是使用ORDER BY
和LIMIT
,但它不能处理具有相同点的重复用户。
SELECT a.*, b.*
FROM user a
INNER JOIN scores b
ON a.id = b.user_ID
ORDER BY b.point DESC
LIMIT 10
要处理重复点,您可以使用包含前N 分数的子查询。
SELECT a.*, b.*
FROM user a
INNER JOIN scores b
ON a.id = b.user_ID
INNER JOIN
(
SELECT point
FROM scores
GROUP BY point
ORDER BY point DESC
LIMIT 10
) c ON b.point = c.point
ORDER BY b.point DESC
答案 1 :(得分:2)
您可能希望使用INNER JOIN
查询,并按points
列降序排列所需的所有相关数据并将结果限制为10
SELECT *
FROM user a
LEFT JOIN scores b
ON a.id = b.user_id
ORDER BY b.point DESC
LIMIT 10
答案 2 :(得分:-1)
使用: -
SELECT *
FROM user as u,scores as s Where u.id = s.user_id
ORDER BY s.point DESC
LIMIT 10