【问题标题】:How to create a new column in output and give values using join in MySQL如何在输出中创建一个新列并在 MySQL 中使用 join 给出值
【发布时间】:2019-03-21 16:29:05
【问题描述】:

我有两个表“group”和“prize”,其中 group 表中有 id、mem_id、membername,prize 表中有 id、prize_memid、prized_memname。

 ***group table***
id    mem_id    membername
1      1          A
2      1          A
3      2          B
4      3          C
5      3          C

***prize table***
id    prize_memid   prized_memname
1       1              A
2       32             yy
3       20             ww
4       2              B

我希望使用 JOINS 得到这样的结果(成员资格是额外的列,不在表中)

***Output***
mem_id   membername  membership
1             A       Prized
2             B       Prized
3             c      Non-Prized

【问题讨论】:

    标签: mysql database join


    【解决方案1】:
    • Group Bymem_idmember_name 上。从group 表到prize 表在mem_id 上执行Left join。 Left join 将允许我们考虑所有成员,无论他们是否获得了奖品。
    • 注意groupReserved keyword in MySQL。你真的应该考虑将你的表重命名为别的东西。否则,您将不得不在它周围使用反引号。
    • 现在,使用 If() 之类的条件函数来检查某个人是否有奖品(如果他至少获得过一次奖品,COUNT(prize_memid) 应该大于零)。

    尝试以下方法:

    SELECT
      g.mem_id, 
      g.membername, 
      IF(COUNT(p.prize_memid) > 0, 'Prized', 'Non-Prized') AS membership  
    FROM 
      `group` as g 
    LEFT JOIN `prize` as p ON p.prize_memid = g.mem_id 
    GROUP BY g.mem_id, g.membername 
    

    【讨论】:

    • 这是一个很好的答案。实际教提问者解释和改进建议,而不仅仅是给他们答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多