如何在输出中创建新列并使用MySQL中的join赋值

时间:2018-10-17 04:30:40

标签: mysql database join

我有两个表“ group”和“ prize”,其中我具有id,mem_id,组表中的成员名和id,prize_memid,prunded_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

1 个答案:

答案 0 :(得分:4)

  • Group Bymem_idmember_name上。从mem_id上的Left join表到group表开始prize。左加入将使我们能够考虑所有成员,无论他们是否获得过奖励。
  • 请注意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