将函数输出作为列名称

时间:2012-05-16 07:09:53

标签: mysql

我遇到过一个场景,我需要将函数的输出“强制转换”为我想要选择的列名:

(SELECT
LOWER(DATE_FORMAT(NOW(), '%b'))
FROM lang_months
WHERE langRef = lang_statements.langRef
) AS month

只返回预期的当前月份,但我希望在这种情况下选择名为“may”的列。

我该怎么做?


谢谢,你的回答给了我一个主意。我只是将当前日期放入变量中并在查询中使用它,如下所示:

$ thisMonth = strtolower(date('M'));

(SELECT
$thisMonth
FROM lang_months
WHERE langRef = lang_statements.langRef
) AS month

3 个答案:

答案 0 :(得分:1)

这是不可能的。当查询到达MySQL时,必须知道实体的名称。

最简单的选择可能是以您使用的任何语言确定列名,然后使用它。例如,在PHP中:

$col = 'someAlias';
$query = "SELECT blah as `{$col}` FROM tbl";

答案 1 :(得分:0)

我认为这不可能。

您可以创建一个视图,为您的数据提供此视图,这样您就可以更有针对性地查询它,但您仍然需要手动编写这12个子查询和别名。

答案 2 :(得分:0)

这应该有效:

$month = LOWER(DATE_FORMAT(NOW(), '%b'));       // Results in 'may'
$result = mysql_query('SELECT * FROM $month');  // Returns all records in table 'may'