【问题标题】:After executiing query, why it gives table not exist error ?执行查询后,为什么会出现表不存在错误?
【发布时间】:2012-06-19 10:41:20
【问题描述】:

我正在尝试执行以下查询:

Insert into pligg_links_temp
select * 
from pligg_links 
WHERE link_id > 0 and link_id < 10000;

但我收到此错误:

#1146 - Table 'chris123_pligg.pligg_links_temp' doesn't exist   when trying to execute query to create table

表不存在,但应该在过程中创建还是我错了?

【问题讨论】:

    标签: mysql mysql-management


    【解决方案1】:

    查询应该是

    CREATE TABLE pligg_links_temp AS SELECT * FROM pligg_links WHERE link_id > 0 and link_id < 10000;
    

    【讨论】:

      【解决方案2】:

      可以通过两种方式将记录从一个表复制到另一个表。

      1. 通过选择插入现有表格。
      2. 通过选择创建并插入到一个新表中,创建于 选定的表字段结构。

      您的错误堆栈跟踪表明表 pligg_links_temp 不存在。
      那么你对create and insert表数据的说法不正确。

      要将现有表中的记录复制到新表中,您需要使用CREATE TABLE ... SELECT Syntax 语法。

      使用以下示例:

      create table pligg_links_temp -- as /* as is optional */  
        select * from pligg_links WHERE link_id > 0 and link_id < 10000;
      

      如果目标表已经存在,可以使用INSERT ... SELECT Syntax语句复制记录。

      insert into pligg_links_temp  
        select * from pligg_links WHERE link_id > 0 and link_id < 10000;
      

      【讨论】:

      • 第一个选项:#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '[as] select * from pligg_links WHERE link_id > 0 and link_id
      • @Chriswede 否。要么使用as,要么不使用它。方括号用作可选的符号。这是不言自明的。
      • 创建表 pligg_links_temp [] select * from pligg_links WHERE link_id > 0 and link_id 0 and link_id
      • select * from pligg_links WHERE link_id > 0 and link_id
      • 对不起,现在我明白了,只是排除 [] 对此感到抱歉
      【解决方案3】:

      不,它不会为您创建它。 http://dev.mysql.com/doc/refman/5.5/en/insert.html 明确表示该表必须存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-22
        • 2010-10-31
        • 1970-01-01
        • 2020-04-27
        相关资源
        最近更新 更多