首页 > 解决方案 > 如何在输出中创建一个新列并在 MySQL 中使用 join 给出值

问题描述

我有两个表'group'和'prize',其中我有组表中的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

标签: mysqldatabasejoin

解决方案


  • Group Bymem_idmember_name。_ 在mem_id上Left joingroup一个表开始到prize另一个表。左加入将允许我们考虑所有成员,无论他们是否获得了奖品。
  • 请注意,这groupMySQL 中的 Reserved 关键字。你真的应该考虑将你的表重命名为别的东西。否则,您将不得不在它周围使用反引号。
  • 现在,使用条件函数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 

推荐阅读