我到处搜索了一个答案,找不到任何人,所以我使出了自己的帖子。这是一个大学任务。我正在使用HeidiSQL。SQL INSERT INTO语句..错误,我对SQL非常陌生
这是我的代码
INSERT INTO
loan(patronCode,bookCode,loanDate,dueDate)
VALUES
(
SELECT
patron.patronCode
WHERE
patron.fname='Jacob' AND patron.lname='Simmons',
SELECT
book.bookCode
WHERE
book.bookTitle='The Agony And The Empathy',
'2014-09-10',
'2014-10-01'
),
(
SELECT
patron.patronCode
WHERE
patron.fname='Jacob' AND patron.lname='Simmons',
SELECT
book.bookCode
WHERE
book.bookTitle='Kevin Rudd: The Biography',
'2014-09-10',
'2014-10-01'
)
FROM
loan
INNER JOIN patron
ON loan.patronCode=patron.patronCode
INNER JOIN book
ON loan.bookCode=book.bookCode;
这是我的错误信息:
SQL错误(1064):你在你的SQL synstax一个错误;检查对应于你的MySQL服务器版本使用附近的正确语法手册“SELECT patron.patronCode WHERE patron.fname =”雅” AND patron.lname =‘硅’在行5
谢谢,解决了它。显然,我有很多东西要学习SQL,因为我不明白为什么没有内部联接语句就可以工作。 – user3675304 2014-09-13 05:22:00
SQL89语法(旧样式)以这种方式工作,连接发生在'where'部分。 SQL92引入了'inner join'语法。如果你有不止一位赞助人名叫雅各布西蒙斯,或者有不止一本名为“痛苦与同情”的书,那么它会在你的贷款表中插入2条记录。因此,请确保您的“where”标准足够紧密,以便为您提供正确数量的结果。 (首先运行选择部分以确保您要插入的内容) – paqogomez 2014-09-13 05:25:07
为了澄清,您只是说,给我所有来自顾客表的东西,并将其加入书表中符合这些标准的所有内容。因此,如果没有像贷款一样的匹配身份证,它很容易获得比您想要的更多。 – paqogomez 2014-09-13 05:27:57