如何在输出中创建一个新列并在mysql中使用join赋值

hk8txs48  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(555)

我有两个表'group'和'prize',其中在group表中有id,mem\u id,membername,在prize表中有id,prize\u memid,prized\u 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

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


***Output***

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

jv4diomz1#

Group Bymem_id 以及 member_name . 做 Left join 从开始 group 表到 prize 表中的mem\u id.left join将允许我们考虑所有成员,无论他们是否获得了奖品。
请注意 group 是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

相关问题