Mysql 返回sql语句为满足特定记录特定条件的列值动态查询的列名

Mysql 返回sql语句为满足特定记录特定条件的列值动态查询的列名,mysql,dynamically-generated,columnname,Mysql,Dynamically Generated,Columnname,我有一个课程表,如下所示,多达600门课程。我想为不为NULL的字段值排序列名。我相信下面的查询可以为几个字段完成这项工作。我可以动态地完成它,这样我就不必在CASE-WHEN语句中写出所有的课程 TBL_课程 |学生ID |数学101 |化学121 |英语101 |物理111 | CSC121| |-----------|---------|---------|--------|--------|--------| |301 |零| 10 |零| 10 |零| |402 | 75 |零|零|

我有一个课程表,如下所示,多达600门课程。我想为不为NULL的字段值排序列名。我相信下面的查询可以为几个字段完成这项工作。我可以动态地完成它,这样我就不必在CASE-WHEN语句中写出所有的课程

TBL_课程 |学生ID |数学101 |化学121 |英语101 |物理111 | CSC121| |-----------|---------|---------|--------|--------|--------| |301 |零| 10 |零| 10 |零| |402 | 75 |零|零| 10 | 75| |423 | 80 | 10 |零| 10 | 60| |404 |零| 10 | 100 | 10 |零| |505 | NULL | 10 | NULL | 10 | 55 |

SQL> 选择studentId, (如果MATH101不为空,则为“MATH101” 当CHEM121不为空时,则为“CHEM121” 当ENG101不为空时,则为“ENG101” 当PHY111不为空时,则为“PHY111” 当CSC121不为空时,则为“CSC121” 否则“ (完)注册课程 来自tbl_课程 其中studentId=402

后果 |学生ID |注册| U课程| |-----------|--------------------| |402 |数学101| |402 | PHY111|
|402 | CSC121 |

我的输出不是动态生成的,因此可能无法在有许多表的情况下使用。有什么好主意吗???