MySQL查询中的动态字段名称选择

时间:2014-03-16 19:46:12

标签: mysql

认为这是一个问题,并希望知道一个解决方案,因为在结果数据集上会有一个连接。我无法找到任何具体的内容,但我确信可以做到 -

我目前正在使用字段(day1,day2,day3等),以及(month1,month2等)作为日程/日期计划的标志,此外还有两个时间字段的时区转换(存储为时间)。

问题是当一个区域是第1天时,可能是第2天,或第7天,在另一个区域。我需要查询在结果上是动态的标记---示例结构

SELECT day1, day2, day3,... FROM mytable

我想做的是:

SELECT `day`[DAY(NOW())] as thisday FROM mytable

结果是,无论当天是什么,它都会为该记录选择适当的字段,并使用一列来显示结果。这将允许使用:

... HAVING thisday = 1

虽然我能够使用CONCAT(blah,blah2,blah3)将字符串数据连接在一起,但我需要类似的功能来创建要选择的字段名称(不是新字段,数据库中的现有字段)

如果不存在本机命令,我愿意创建一个可以处理此问题的函数。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我认为您可以使用CASE语句根据某个值选择正确的列。

SELECT CASE DAY(NOW()) WHEN 1 THEN day1 WHEN 2 THEN day2 ELSE day29 END as thisday FROM mytable