0

我有 3 张桌子

  • 带有用户名和用户 ID 的 users 表,
  • 具有用户 ID 和分数的用户排行榜
  • 具有用户 ID 和 numOfLikes 的点赞排行榜

我想选择点赞最多的用户名,以及得分最高的用户名。但我的问题是,当我编写查询时,我在name那里复制了字段。我该怎么办?

4

4 回答 4

2

使用别名可能会对您有所帮助

SELECT a.id as id_a,
  b.id as id_b,
  c.id as id_c
from a
inner join b
  on a.id = b.a_id
inner join c
  on a.id = c.a_id
于 2013-01-09T10:42:24.790 回答
1

您可能正在使用SELECT *. 您应该指定字段名称:

SELECT u.user_id, u.name, li.numOfLikes FROM users u INNER JOIN likes li ON (u.user_id=li.user_id) ORDER BY li.numOfLikes

SELECT u.user_id, u.name, s.score FROM users INNER JOIN scores s ON (u.user_id=s.user_id) ORDER BY s.score
于 2013-01-09T10:42:54.490 回答
1

我在查询中使用以下三个表

  1. usertable - 包含用户名和用户 ID
  2. table2 - 包含用户 ID 和分数
  3. table3 - 包含用户 ID 和 numOfLikes

要获取具有最高分数的用户的详细信息,请使用以下

select usrtbl.username,usrtbl.userid,tbl2.score from  usertable usrtbl inner join table2 tbl2 on usrtbl.userid=tbl2.userid order by tbl2.score
desc limit 1

要获取最大喜欢数的用户的详细信息,请使用以下内容

select usrtbl.username,usrtbl.userid,tbl3.numOfLikes from  usertable usrtbl inner join table3 tbl3 on usrtbl.userid=tbl3.userid order by tbl3.numOfLikes
desc limit 1

要在一个查询中获取所有内容,请使用以下查询

select usrtbl.username as 'user_with_max_score',usrtbl.userid as 'userid_of_user_with_max_score',
tbl2.score as 'max_score',usrtbl2.username as 'user_with_max_likes',usrtbl2.userid as 'userid_of_user_with_max_score' ,
tbl3.numOfLikes as 'max_likes' from  usertable usrtbl2 inner join table3 tbl3 inner join  usertable usrtbl inner join table2 tbl2 
on usrtbl.userid=tbl2.userid  and usrtbl2.userid=tbl3.userid order by tbl2.score desc,tbl3.numOfLikes desc
 limit 1
于 2013-01-09T10:59:20.937 回答
0

您可以使用tablename .name进行选择

于 2013-01-09T10:41:42.800 回答