MySQL Advanced Select

数据表Occupation保存了每一个人的名字及职业,描述如下:

 ColumnType
 Namestring
 Occupationstring
查询以输出每个名字按字母顺序排列在其相应的职业下面。职业及列标题分别是Doctor,Professor,Singer和Actor。
当没有与职业对应的更多的名称时,打印NULL。
示例数据:
MySQL Advanced Select - bloveice0915 - 风雨
Jenny    Ashley     Meera  Jane
Samantha Christeen  Priya  Julia
NULL     Ketty      NULL   Mariade
查询语句如下:
SET @r1 = 0, @r2 = 0, @r3 = 0, @r4 = 0;
SELECT
min(Doctor),
min(Professor),
min(Singer),
min(Actor)
FROM (
SELECT CASE WHEN Occupation = 'Doctor'
THEN (@r1 := @r1 + 1)
WHEN Occupation = 'Professor'
THEN (@r2 := @r2 + 1)
WHEN Occupation = 'Singer'
THEN (@r3 := @r3 + 1)
WHEN Occupation = 'Actor'
THEN (@r4 := @r4 + 1)
END AS RowNumers,
CASE WHEN Occupation='Doctor' THEN name END AS Doctor,
CASE WHEN Occupation='Professor' THEN name END AS Professor,
CASE WHEN Occupation='Singer' THEN name END as Singer,
CASE WHEN Occupation='Actor' THEN name END AS Actor
FROM occupations
ORDER BY name
) temp
GROUP BY RowNumers;

转载于:https://www.cnblogs.com/bloveice0915/p/7659723.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值