我有两个表“ 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
解决方法:
>按mem_id和member_name分组.从mem_id上的组表到奖品表开始进行左加入.左加入将使我们能够考虑所有成员,无论他们是否获得过奖赏.
>请注意,组是Reserved 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
标签:join,mysql,database
来源: https://codeday.me/bug/20191024/1924557.html