mysql - creating a temporary table of dates mysteriously "appends"一遍又一遍的数据到临时表?

标签 mysql

我需要与日期表交叉连接,所以我使用了:

CREATE TEMPORARY TABLE IF NOT EXISTS myDates AS (

SELECT 

CAST((SYSDATE()+INTERVAL (H+T+U) DAY) AS date) d

FROM ( SELECT 0 H
    UNION ALL SELECT 100 UNION ALL SELECT 200 UNION ALL SELECT 300
  ) H CROSS JOIN ( SELECT 0 T
    UNION ALL SELECT  10 UNION ALL SELECT  20 UNION ALL SELECT  30
    UNION ALL SELECT  40 UNION ALL SELECT  50 UNION ALL SELECT  60
    UNION ALL SELECT  70 UNION ALL SELECT  80 UNION ALL SELECT  90
  ) T CROSS JOIN ( SELECT 0 U
    UNION ALL SELECT   1 UNION ALL SELECT   2 UNION ALL SELECT   3
    UNION ALL SELECT   4 UNION ALL SELECT   5 UNION ALL SELECT   6
    UNION ALL SELECT   7 UNION ALL SELECT   8 UNION ALL SELECT   9
  ) U

WHERE
  (SYSDATE()+INTERVAL (H+T+U) DAY) <= (SYSDATE()+INTERVAL 1 YEAR)

);

但出于某种原因,这会不断将日期附加到临时表 myDates。为什么会这样?

编辑 #1:我无法在我的其他服务器上重现此内容。在问题服务器中,当我处理我的大查询时,我运行了这个片段。这可能是为什么吗?

编辑 #2:在我运行此命令时出现问题的服务器中:

CREATE TEMPORARY TABLE IF NOT EXISTS myDates AS (

SELECT 

CAST((SYSDATE()+INTERVAL (H+T+U) DAY) AS date) d

FROM ( SELECT 0 H
    UNION ALL SELECT 100 UNION ALL SELECT 200 UNION ALL SELECT 300
  ) H CROSS JOIN ( SELECT 0 T
    UNION ALL SELECT  10 UNION ALL SELECT  20 UNION ALL SELECT  30
    UNION ALL SELECT  40 UNION ALL SELECT  50 UNION ALL SELECT  60
    UNION ALL SELECT  70 UNION ALL SELECT  80 UNION ALL SELECT  90
  ) T CROSS JOIN ( SELECT 0 U
    UNION ALL SELECT   1 UNION ALL SELECT   2 UNION ALL SELECT   3
    UNION ALL SELECT   4 UNION ALL SELECT   5 UNION ALL SELECT   6
    UNION ALL SELECT   7 UNION ALL SELECT   8 UNION ALL SELECT   9
  ) U

WHERE
  (SYSDATE()+INTERVAL (H+T+U) DAY) <= (SYSDATE()+INTERVAL 1 YEAR)

);

SELECT COUNT(*) FROM myDates;

这次运行它,我得到 8738,下一个 9104。它不断附加它。什么?

最佳答案

所以它会在您每次运行查询时追加 366。 你有没有尝试过 删除表 myDates; 一旦你完成了 table ?这不是解决方案,但可以作为变通方法。

您也可以尝试修复包括所有表在内的数据库。 mysqlcheck --repair --all-databases 从命令行 sql,看看这是否有帮助。

关于mysql - creating a temporary table of dates mysteriously "appends"一遍又一遍的数据到临时表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27532193/

相关文章:

mysql - Dapper - 空值被插入到 MySql 表中

mysql - phpMyadmin - 错误 #1064

mysql - MySQL 查询可以将行转换为列吗?

javascript - 自动完成两个字段没有任何反应

php mysqli 插入不起作用

MySQL SELECT 效率

php - 在Mysql表中保存座位安排

php - 在表中使用多个外键

mysql - 无法使用 sequelize ORM 在 mysql 中创建 View

mysql - Thinking Sphinx 和 rails : Lost connection to MySQL server at 'reading initial communication packet' error