【问题标题】:Set MySQL Column Alias to a Calculated Date将 MySQL 列别名设置为计算日期
【发布时间】:2013-04-27 03:08:17
【问题描述】:

我想做这样的事情:

select data AS curdate() from table;

所以结果表看起来像:

2013-04-26
  data 1
  data 2
  data 3

语法我看不懂,但一定有可能吧?

我试过不加任何引号,但会返回错误。单引号和反引号都返回 SQL 本身作为列标题。

【问题讨论】:

  • 我怀疑这是可能的

标签: mysql


【解决方案1】:

这是一个不寻常的要求,但如果你坚持,你必须使用动态 sql。

SET @curdate = CURDATE();
SET @sql = CONCAT('SELECT whatever AS "', @curdate, '" FROM whatever');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

【讨论】:

  • 对我来说看起来是正确的,但是当我运行时,出现此错误:错误代码:1064。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行 (SET @qry = CONCAT('SELECT uid AS ', @curdate, ' FROM users limit 10');) 的“2013-04-26 FROM users limit 10”附近使用正确的语法(SET @qry = CONCAT('SELECT uid AS ', @curdate, ' FROM users limit 10');)
  • @Sumoanand 添加了",应该可以解决这个问题。
  • 哦,我应该抓住它的。 :) +1
【解决方案2】:

别名被视为标识符,如果不使用动态 SQL,则无法将其分配给函数。它会破坏引用,例如:

SELECT *
FROM (SELECT 1 AS curdate()) a

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-27
    • 1970-01-01
    • 2013-09-11
    相关资源
    最近更新 更多