我遇到过一个场景,我需要将函数的输出“强制转换”为我想要选择的列名:
(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
答案 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'