簡體   English   中英

MySql-在一個查詢中從兩個不同的表中選擇用戶名

[英]MySql - Select user name from two different tables in one query

我有3張桌子

  • 用戶表,其中包含用戶名和用戶ID,
  • 具有用戶ID和得分的用戶排行榜
  • 用戶ID為numOfLikes的點贊排行榜

我想選擇最喜歡的用戶的名稱和得分最高的用戶的名稱。 但是我的問題是,當我編寫查詢時,我在那里重復了name字段。 我該怎么辦?

使用別名可能會幫助您

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

您可能正在使用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

我在查詢中使用以下三個表

  1. usertable-包含用戶名和用戶ID
  2. table2-包含用戶標識和分數
  3. table3-包含userid和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

您可以選擇表名 .name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM