mysql - 如何在输出中创建一个新列并在 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
解决方案
Group By
mem_id
和member_name
。_ 在mem_id上Left join
从group
一个表开始到prize
另一个表。左加入将允许我们考虑所有成员,无论他们是否获得了奖品。- 请注意,这
group
是MySQL 中的 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
推荐阅读
- java - 射击后如何将一颗子弹分成多颗子弹
- javascript - 如何防止同一系统的多个用户生成相同的参考号
- react-native-android - 图像压缩反应原生
- google-analytics - Google Analytics 过滤器“Ashburn”在视图中不起作用
- c# - 从列表中提取值并将其保存到 C# 中的现有 Excel 工作表中
- drools - 版本从 v7.20 更改为 v7.21 后,drools 中的无限递归
- spring - Spring MVC中@ResponseBody的用例是什么
- tensorflow - 使用 Google 的 DEEPLAB V3+ 获取图像分割中每个语义类的类别概率分数
- ibm-mq - 卸载 WebSphere MFT
- ios - 无法同时满足动画约束