如何使用Mysql

时间:2016-02-17 08:56:22

标签: mysql

我试图按照主题在一行中显示一些学生成绩数据如果学生UID相同。请建议我可以在单个Mysql查询中,或者我需要使用php条件。收集信息后,这是我的表格。

     sl |   uid         | name      |   subject |   score
 ---------------------------------------------------------
     1  |   a1          |  AA       |   Math    |  80
     2  |   b1          |  BB       |   Math    |  78
     3  |   a1          |  AA       |   Physics |  70
     4  |   b1          |  BB       |   Physics |  67

我希望在一行中按照主题明智地显示所有得分。

  uid           | name      |   math    |   physics
---------------------------------------------------
  a1            | AA        |   80      |   78
  b1            | BB        |   70      |   67

这是我的代码,它给了我不同的输出。请帮我解决这个问题。

SELECT DISTINCT a.uid, a.name,a.subject,a.score from STUDENT a, STUDENT b where a.uid=b.uid AND a.std=b.std GROUP BY a.uid, a.subject

谢谢

2 个答案:

答案 0 :(得分:0)

这应该有效

SELECT uid, name, SUM(CASE WHEN subject='Math' THEN score else 0 END) As 'Math', SUM(CASE WHEN subject='Physics' THEN score else 0 END) As 'Physics' FROM Student GROUP BY name

答案 1 :(得分:-1)

我认为你必须使用某种枢轴机制;比如看, MySQL pivot row into dynamic number of columns