我到處搜索了一個答案,找不到任何人,所以我使出了自己的帖子。這是一個大學任務。我正在使用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