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 内连接的主要内容,如果未能解决你的问题,请参考以下文章