我怎样才能获得一个列值联接相同的表值

时间:2019-04-18 10:43:13

标签: mysql

用户

user_types 1 =管理员  2 =分配器  3 =零售商


    user_id | user_name| user_type| user_under|
    ---------------------------------------------------------------------------
     1      | user1    | 1        | 0      
     2      | user2    | 3        | 2  
     3      | user3    | 2        | 0
     4      | user4    | 3        | 2
     5      | user5    | 3        | 2

充值


    rech_id | user_id| amount| 
    ---------------------------------------------------------------------------
     1      | 2    | 249
     2      | 4    | 495
     3      | 5    | 175

想要的结果


    rech_id | user_id| user_under| 
    ---------------------------------------------------------------------------
     1      | 2    | user3           
     2      | 4    | user3
     3      | 5    | user3

我想通过加入充值表来列出所有用户分发者名称

3 个答案:

答案 0 :(得分:1)

您需要使用join获得此结果。我不明白您是否提出质疑,但您需要使用以下代码:

  select rech_id,user_id,user_under from users INNER JOIN recharge ON users.user_id=recharge.user_id;

答案 1 :(得分:1)

如您所见,在输出表中,您只需要两个用户都存在并充值的user_id,因此应用内部联接。 接下来,

  1. 可以从充值表中获取rech_id
  2. user_id可以从用户或充值表中获取。
  3. 对于user_type,在通缉结果中有一个模式,即“ user”关键字与users表的user_type组合。因此使用concat(“ user”,user_type)
select re.rech_id,re.user_id,concat("user",us.user_type) as user_under
    from users us inner join recharge re USING (user_id)

答案 2 :(得分:1)

请尝试解决您的问题,不要只是在这里问。 无论如何,我认为这可以解决您的问题

SELECT * FROM users AS u INNER JOIN recharge AS r on r.user_id = u.user_id
GROUP BY u.user_name;