› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
AsterN
V2EX  ›  MySQL

这个查询用 SQL 怎么写

  •  
  •   AsterN · Mar 16, 2015 · 4396 views
    This topic created in 4226 days ago, the information mentioned may be changed or developed.

    数据库:
    姓名  课程  成绩
    小明  语文  98
    小明  数学  87
    小明  地理  88
    小明  历史  76
    小军  语文  75
    小军  数学  67
    小军  地理  88
    小军  历史  59
    小红  语文  98
    小红  数学  66
    小红  地理  88
    小红  历史  77

    查询结果:
    姓名  语文  数学  地理  历史
    小明  98   87   88   76
    小军  75   67   88   59
    小红  98   66   88   77

    4 replies  •  2015-03-17 12:53:01 +08:00
    angelo_peng
        2
    angelo_peng  
       Mar 16, 2015   ❤️ 1
    doushini
        3
    doushini  
       Mar 16, 2015 via Android
    行转列的问题
    Sight4
        4
    Sight4  
       Mar 17, 2015   ❤️ 1
    可以使用SUM-IF来解决,例如:

    SELECT
    `姓名`,
    SUM(IF(`课程`='语文', score, 0)) AS `语文`,
    SUM(IF(`课程`='数学', score, 0)) AS `数学`,
    SUM(IF(`课程`='地理', score, 0)) AS `地理`,
    SUM(IF(`课程`='历史', score, 0)) AS `历史`
    FROM 表名 GROUP BY `姓名`

    重点是首先,课程的名字不能错,否则会统计不到,另外就是,如果同一张表中存在重复记录,会累加统计,所以,一般会加上其他限定条件,比如 考试时间,或者批次等等来区分
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2688 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 15:27 · PVG 23:27 · LAX 08:27 · JFK 11:27
    ♥ Do have faith in what you're doing.