java - mysql查询,这是怎么查询的呢
世界只因有你
世界只因有你 2017-06-22 11:54:36
[MySQL讨论组]

群中看到别人发的一个面试题,=。=,怎么查询的呢。

世界只因有你
世界只因有你

全部回复(4)
黄舟

题图是Chinase,按这个来。
Course确定情况下:
CASE实现:

SELECT
    `Name`,
    MAX(
        CASE
        WHEN Course = 'Chinase' THEN
            Score
        END
    ) AS Chinase,
    MAX(
        CASE
        WHEN Course = 'Math' THEN
            Score
        END
    ) AS Math,
    MAX(
        CASE
        WHEN Course = 'English' THEN
            Score
        END
    ) AS English
FROM
    table1
GROUP BY
    `Name`

IF实现:

SELECT
    `Name`,

SUM(IF (Course = 'Chinase', Score, 0)) AS Chinase,

SUM(IF (Course = 'Math', Score, 0)) AS Math,

SUM(IF (Course = 'English', Score, 0)) AS English

FROM
    table1
GROUP BY `Name`

Course不确定,使用动态:

SET @CC='';
SELECT @CC:=CONCAT(@CC,'SUM(IF(Course=\'',Course,'\'',',Score,0)) AS ',Course,',') FROM (SELECT DISTINCT Course FROM table1) A;
SET @HH=CONCAT('SELECT Name,',LEFT(@CC,LENGTH(@CC)-1),' FROM table1 GROUP BY Name');
PREPARE stmt FROM @HH;
EXECUTE stmt;
大家讲道理
select name, sum(case when Course='Chinese' then Score end) as Chinese,
sum(case when type='Math' then Score end) as Math,
sum(case when type='English' then Score end) as English
from table1
group by name
PHP中文网

你应该缺学习一下原理
百度"mysql行列转换"
只学会这一个sql也没什么用

扔个三星炸死你

做数据统计的时候会用到这种神一样的sql,平时phper工作上是用不上的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号