执行查询后,为什么它给表不存在错误?

时间:2012-06-19 10:41:20

标签: mysql mysql-management

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

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

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

3 个答案:

答案 0 :(得分:2)

查询应为

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

答案 1 :(得分:1)

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

  1. 通过选择插入现有表格。
  2. 通过选择创建并插入到从中创建的新表中 选定的表字段结构。
  3. 您的错误堆栈跟踪表示表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;
    

答案 2 :(得分:0)

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