MySQL 错误 1064 内连接

Posted

技术标签:

【中文标题】MySQL 错误 1064 内连接【英文标题】:MySQL error 1064 inner join 【发布时间】:2017-01-29 21:32:20 【问题描述】:

我写了这个 SQL:

INSERT INTO registered (`idc`, `idp`, `date`)
SELECT 'idc' 
FROM course,registered
    INNER JOIN course c ON c.idc=registered.idc 
WHERE course.title='aaa',
      (SELECT `idp` FROM participant,registered
      INNER JOIN participant ON participant.idp=registered.idp WHERE 
      participant.username='mmm')

我得到这个错误:

1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以了解要使用的正确语法 靠近 ' (SELECT idp FROM 参与者,在第 4 行注册 INNER JOIN 参与者 ON pa'

【问题讨论】:

见meta.***.com/questions/333952/… 【参考方案1】:

课程 idc int(11)PRI auto_increment 标题 varchar(200) UNI 详细信息文本 参与者 idp int(11)PRI 自动增量 名字 varchar(50) 姓氏 varchar(50) 用户名 varchar(100)UNI 挂号的 idc int(11) 无符号 PRI idp int(11) 无符号 PRI 日期日期

【讨论】:

【参考方案2】:

你可能想尝试这样的事情,在它之后设置一个父 SELECT 和另外两个 SELECT 语句......

INSERT INTO registered (idc, idp, date) 
  SELECT 
    (SELECT 'idc' FROM course, registered INNER JOIN course c ON c.idc=registered.idc WHERE course.title='aaa'), 
    (SELECT idp FROM participant,registered INNER JOIN participant ON participant.idp=registered.idp WHERE participant.username='mmm');

此外,您可能还需要设置“日期”。如果它是根据该列的定义自动设置的,则可以省略:

INSERT INTO registered (idc, idp)...

【讨论】:

【参考方案3】:

您的插入语句需要 3 个值:(idc,idp,date) 但您的选择语句只提供一个:SELECT 'idc'

您应该将您的查询重新定义为:

INSERT INTO registered (`idc`, `idp`, `date`)
SELECT course.idc, participant.idp, <HERE A DATE> 
FROM registered
    INNER JOIN course ON course.idc = registered.idc
    INNER JOIN participant ON participant.idp = registered.idp
WHERE 
    course.title = 'aaa'
    and participant.username = 'mmm';

但是您的 INSERT 语句需要一个日期字段作为第三个字段,您必须提供它。

【讨论】:

每次我找到解决方案时都会出现一个新错误!! 你的select语句应该基本返回3个字段。 我的目标是在表中插入注册的 idc 和 idp 或者标题是唯一的('aaa'),并且参与者的用户名是'mmm' 你能发布你的表架构吗? 课程 idc int(11)PRI auto_increment title varchar(200) UNI 详细信息 text 参与者 idp int(11)PRI auto_increment firstname varchar(50) lastname varchar(50) username varchar(100)UNI 注册 idc int(11) unsigned PRI idp int(11) unsigned PRI date date

以上是关于MySQL 错误 1064 内连接的主要内容,如果未能解决你的问题,请参考以下文章

连接内网服务器上的mysql报错

MySql多表查询

MySQL连接查询 内连接和外连接的区别

mysql内连接和外连接的区别

MySQL 的内连接、左连接、右连接有啥区别?

MYSQL数据库--连接查询