0

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

(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
4

3 回答 3

1

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

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

$col = 'someAlias';
$query = "SELECT blah as `{$col}` FROM tbl";
于 2012-05-16T07:19:17.433 回答
0

我不认为这是可能的。

您可以创建一个视图,为您的数据提供此视图,以便他们更有表现力地查询它,但您仍然必须手动编写这 12 个子查询和别名。

于 2012-05-16T07:17:49.843 回答
0

这应该有效:

$month = LOWER(DATE_FORMAT(NOW(), '%b'));       // Results in 'may'
$result = mysql_query('SELECT * FROM $month');  // Returns all records in table 'may'
于 2012-05-16T07:42:53.480 回答