【问题标题】:MySQL insert statement (insert into table (columns) select statement)MySQL insert 语句(insert into table(columns)select 语句)
【发布时间】:2011-12-04 07:48:28
【问题描述】:

我正在尝试将值插入表的选定列,但只插入 MySQL 语句的结果。 select 语句本身可以正常工作并返回结果。

当与插入语句结合时,它会失败并显示

error incorrect syntax near `dedspgoods`.`case number`.

谁能帮助我正确的语法?我的错误语法如下:

insert into despgoods_alldetails 
  (`case number`, weight, customer, transporttypename) 
values 
( select despgoods.`case number`
       , despgoods.weight
       , despgoods.customer
       , customers.transporttypename 
  from despgoods 
    inner join customers 
      on despgoods.customer = customers.customer )

【问题讨论】:

  • 有效的SELECT 是什么?
  • 选择 despgoods.case number,despgoods.weight,despgoods.customer,customers.transporttypename 来自 despgoods 的内部连接客户。 @=customers.customer)
  • 请注意,每个字段都有' ' ,只是在提交评论时没有进行。谢谢
  • 它可能有反引号:`weight`,而不是单引号:'weight'
  • 您不能只将所有内容都放在引号中。您可以将“案例编号”放在单引号内,但不能将值或列名称。

标签: mysql select insert


【解决方案1】:

如果这是有效的SELECT:

select despgoods.`case number`
     , despgoods.weight
     , despgoods.customer
     , customers.transporttypename 
from despgoods 
  inner join customers 
    on despgoods.customer = customers.customer

然后试试这个(注意没有VALUES子句,如果你想插入SELECT的结果集:

insert into despgoods_alldetails 
  (`case number`, weight, customer, transporttypename) 
select despgoods.`case number`
     , despgoods.weight
     , despgoods.customer
     , customers.transporttypename 
from despgoods 
  inner join customers 
    on despgoods.customer = customers.customer

【讨论】:

  • 嗨@ypercube。感谢一百万,语法完美。感谢帮助。
  • 请注意,INSERT INTO 您要么将VALUES 与行列表一起使用或 SELECT。
  • 并且尽量不要在表名或列名中有空格。您可以使用case_number 或CaseNumber。它更容易,因为您不必每次都反引号。
【解决方案2】:

正如@EdHeal 所述,您需要将case number 括在引号或反引号之间,因为列名中有一个空格(CASE 是保留字这一事实实际上只是一个有趣的细节,但在这种情况下,这不是破坏查询的原因)。

insert into despgoods_alldetails (`case number`,weight,customer,transporttypename) 
values (
    select despgoods.`case number`, despgoods.weight, despgoods.customer, customers.transporttypename
    from despgoods 
    inner join customers on (despgoods.customer=customers.customer)
)

【讨论】:

    【解决方案3】:

    来了

     INSERT INTO despgoods_alldetails(
                                      casenumber,
                                      weight,
                                      customer,
                                      transporttyplename)
    
    
     VALUES(SELECT desp.casenumber,
            desp.weight,
            despgoods.customer, 
            customers.transporttypename)
    
     FROM despgoods
     INNER JOIN customers on despgoods.customer = customers.customer
    

    那里。那应该可以正常工作。请记住,不要用空格命名变量,因为它会变得非常棘手。我认为您的案例编号有错误,因为当案例是 MySQL 中的一个函数时,它之间有一个空格。如果您还需要什么,请告诉我。

    【讨论】:

      【解决方案4】:

      case 是保留字。需要将“案例编号”放在引号中。

      【讨论】:

      • 嗨,我在字段周围插入` `,提交评论时不包括格式
      • @Ryan:尝试编辑您的问题。将代码粘贴到您的问题中,然后选择它并点击代码图标:{}。这会将您的代码格式化为代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2021-07-02
      • 2010-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-02-21
      • 2021-01-19
      相关资源
      最近更新 更多