GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]] [SEPARATOR str_val])这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成: mysql> SELECT student_name, -> GROUP_CONCAT(test_score) -> FROM student -> GROUP BY student_name; or mysql> SELECT student_name, -> GROUP_CONCAT(DISTINCT test_score -> ORDER BY test_score DESC SEPARATOR " ") -> FROM student -> GROUP BY student_name;可以试试(在mysql手册中关于group by 中的函数部分),不过离你的要求还有点差距:)
select 学号, sum(case 科目号 when '数学' then 成绩 else 0 end) 数字, sum(case 科目号 when '语文' then 成绩 else 0 end) 语文, sum(case 科目号 when '英语' then 成绩 else 0 end) 英语 from tab group by 学号我没环境试,你试试行不行......
数学一定是60?
建议通过php循环来做
因为你这两个表联系不大啊
觉得不可能直接用sql达到这样的效果。比如:表是这样
1 数学 60
1 语文 80
1 英语 90谁有办法显示成这样?
id 数学 语文 英语
1 60 80 90
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成: mysql> SELECT student_name,
-> GROUP_CONCAT(test_score)
-> FROM student
-> GROUP BY student_name;
or
mysql> SELECT student_name,
-> GROUP_CONCAT(DISTINCT test_score
-> ORDER BY test_score DESC SEPARATOR " ")
-> FROM student
-> GROUP BY student_name;可以试试(在mysql手册中关于group by 中的函数部分),不过离你的要求还有点差距:)
学号,
sum(case 科目号 when '数学' then 成绩 else 0 end) 数字,
sum(case 科目号 when '语文' then 成绩 else 0 end) 语文,
sum(case 科目号 when '英语' then 成绩 else 0 end) 英语
from
tab
group by 学号我没环境试,你试试行不行......