【发布时间】:2015-11-11 10:53:45
【问题描述】:
我是mysql新手,我有这样的结构
timestamp | Name | Total | Student1 | Student2 | Student3
20150911 | X | 100 | 76 | 10 | NA
20151111 | Y | 70 | NA | 0 | 23
现在我想用 mysql 查询在给定的 'timestamp' 处选择
- 所有非零数字的学生列
- 所有不适用的学生列
- 所有为零的学生列
预期结果
- 如果我输入“非零”查询,它应该为时间戳 20150911 提供列名称为“Student1,Student2”
- 如果我输入“零”查询,它应该将列名称作为 () 用于时间戳 20150911
- 如果我输入“NA”查询,它应该为时间戳 20150911 提供列名称为“Student3”
我曾尝试搜索这种混合选择,但到目前为止我还没有成功。大多数答案都集中在行选择而不是列上。
【问题讨论】:
-
你有多少个学生栏(可变或固定)?无论如何,这看起来很糟糕,对于每个新学生,您都必须更改表格
-
@lad2025 我现在有 15 列。但是我想保持它的灵活性,这样将来我就不用担心了。但是,学生列的最大数量是 30。
-
因为您只能在记录级别确定是否将该记录包含在结果集中,而不是基于列。请定义预期结果,以便我们帮助查询。
-
“我有这样的结构”。是的。修复它。见规范化。
-
@Shadow,我添加了预期结果。