【问题标题】:MySQL Inserting Multiple Columns and Rows into a Temporary TableMySQL将多列和多行插入临时表
【发布时间】:2013-08-21 03:35:24
【问题描述】:

我有一个临时表:

CREATE TEMPORARY TABLE IF NOT EXISTS `temp`
AS (
 SELECT COUNT(*) as count, YEAR(end_date)
 FROM a
 WHERE column_1 = "some_condition"
 GROUP BY YEAR(end_date)
);

然后我尝试将新值添加到此表中

INSERT INTO temp (count, year)
VALUES(
  SELECT COUNT(*) as count, year(end_date)
  FROM b
  WHERE column_1 = "some_condition"
  GROUP BY YEAR(end_date)
);

这行会引发错误。 给出的错误:

1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以了解正确的语法使用

'SELECT COUNT(*) as count, year(end_date) FROM b
WHERE column_1 = "some condition" ' 在第 3 行

我想要实现的是选择要插入到临时表中的新行和列。有什么想法吗?

第一次查询后,临时表应如下所示:

count  year
3      2012
20     2013
104    2011

第二个查询的选定结果如下所示

count  year
6      2013

预期结果:

count  year
3      2012
20     2013
104    2011
6      2013

【问题讨论】:

  • "这行抛出错误。"您可能应该编辑您的问题并添加该错误。

标签: mysql


【解决方案1】:

尝试在插入语句中不使用“VALUES” 语法:http://www.w3schools.com/sql/sql_insert_into_select.asp

INSERT INTO `temp` (`count`, `year`)
  SELECT
    COUNT(*),
    year(`end_date`)
  FROM `b`
  WHERE `column_`` = "condition" GROUP BY YEAR(end_date);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 2016-01-31
    • 2018-11-20
    • 1970-01-01
    • 2016-02-15
    • 1970-01-01
    相关资源
    最近更新 更多