【问题标题】:MySQL temp table issueMySQL临时表问题
【发布时间】:2010-06-16 13:43:49
【问题描述】:

我正在尝试使用临时表来加速我的 MySQL 4.1.22 标准数据库,而看似简单的操作却给我带来了各种问题。 我的代码如下......

CREATE TEMPORARY TABLE nonDerivativeTransaction_temp (
   accession_number varchar(30), 
   transactionDateValue date)
) TYPE=HEAP;

INSERT INTO nonDerivativeTransaction_temp 
VALUES( SELECT accession_number, transactionDateValue 
          FROM nonDerivativeTransaction 
         WHERE transactionDateValue = "2010-06-15");

SELECT * 
  FROM nonDerivativeTransaction_temp;

原始表(nonDerivativeTransaction)有两个字段,accession_number(varchar(30))和transactionDateValue(日期)。

显然我对前两个陈述有疑问,但我似乎无法确定它是什么。任何帮助,将不胜感激。

【问题讨论】:

  • 信息不足,无法给出有意义的答案,请详细说明 a) 您收到的错误消息 b) 您预期会发生什么 c) 提及的所有表的架构 d) 解释提及的所有查询的计划。跨度>
  • 首先,请列出您遇到的错误(您说您在前 2 条语句中遇到了问题,究竟是什么问题)。其次,什么版本的MySQL(有很多版本的4)。第三,您可能应该升级到至少 5.0(最好是 5.1),因为对 4.x 的支持在 2008 年或 2009 年结束,具体取决于版本...

标签: mysql mysql-error-1064 temp-tables


【解决方案1】:

INSERT INTO ... VALUES ( SELECT 中删除VALUES(,它是VALUES() 或SELECT,而不是两者。

通常您的这种设置会减慢速度而不是加快速度,除非您在会话期间查询临时表很多,并且查询缓存已关闭和/或不可行。

【讨论】:

  • 感谢 Wrikken。原始表有大量条目,我只需要在任何特定时间给定日期。我的解决方案是使用临时表来仅保存该特定日期的那些值。
  • +1:这是一个语法错误。 @AmyD:如有疑问,请查看文档:dev.mysql.com/doc/refman/5.1/en/insert.html
【解决方案2】:

快速浏览让我想知道不匹配的括号是否可能是您问题的一部分...

【讨论】:

  • 天哪!我不敢相信我竟然把这个错误归咎于一个像括号这样简单的错误。
猜你喜欢
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
  • 2014-08-23
  • 2011-03-03
  • 2020-11-30
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多