【问题标题】:INSERT INTO using data from other table causing ERROR 1064INSERT INTO 使用其他表中的数据导致 ERROR 1064
【发布时间】:2019-06-05 15:29:12
【问题描述】:

我的 INSERT INTO 命令是:

INSERT INTO environment_fid (FID_environment) VALUES SELECT ID FROM environment WHERE name='planes';

但我得到了:

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'SELECT ID FROM environment WHERE name='planes'' 附近使用正确的语法

我有三张桌子,但我只尝试了两张:

CREATE TABLE `environment_fid` (
  `ID` mediumint(9) unsigned AUTO_INCREMENT,
  `FID_environment` mediumint(9) unsigned,
  `FID_monster` mediumint(9) unsigned ,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM;

DROP TABLE IF EXISTS `environment`;
CREATE TABLE `environment` (
  `ID` mediumint(9) unsigned AUTO_INCREMENT,
  `name` text NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM;

但是,当我放入零件时:

INSERT INTO environment_fid (FID_environment) VALUES (78);

查询正常,1 行受影响(0.00 秒)

和

 SELECT ID FROM environment WHERE name='planes';

*+----+
| ID |
+----+
| 66 |
+----+

1 row in set (0.00 sec)*

我不知道这个问题,有什么建议吗?

谢谢,

INSERT INTO environment_fid (FID_environment) SELECT ID FROM environment WHERE name='planes';

解决我的问题,但我怎样才能获得其他表?例如:

INSERT INTO environment_fid (FID_environment, FID_monster) 
SELECT ID FROM environment  WHERE name='planes',
SELECT ID FROM monster WHERE family='Blue';

【问题讨论】:

  • 删除INSERT INTO中的VALUES
  • 我还是 MySQL 新手。谢谢,解决了。
  • 但是,我是如何得到不同的表的?

标签: mysql select myisam insert-into


【解决方案1】:

删除 values 和 将您的查询更改为:

INSERT INTO environment_fid (FID_environment) 
SELECT ID FROM environment WHERE name='planes';

或

INSERT INTO environment_fid (FID_environment) VALUES (environment_id)

【讨论】:

    【解决方案2】:

    删除INSERT INTO 中的VALUES。你不能在INSERT INTO中混合VALUES和SELECT

    所以你的工作查询将是:

    INSERT INTO environment_fid (FID_environment) 
    SELECT ID FROM environment WHERE name='planes';
    

    INSERT INTO 语句的一些示例

    INSERT INTO TableName (Col1, Col2, Col3) VALUES (@Val1, @Val2, @Val3)

    或

    INSERT INTO TableName (Col1, Col2, Col3) 
    SELECT @Val1, @Val2, @Val3
    

    【讨论】:

    【解决方案3】:

    我发现了我的最后一个问题:

    INSERT INTO environment_fid (FID_environment, FID_monster) 
    SELECT 
     (SELECT environment.ID FROM environment WHERE name='planes') AS FID_environment, 
     (SELECT ID FROM monster WHERE family='Blue') AS FID_monster;
    

    【讨论】:

      猜你喜欢
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      相关资源
      最近更新 更多