Mysql
這個 mysql INSERT 語句有什麼問題?
我有表:
Book: - id:(int) primary key, autoincrement, not null, - title:(varchar) not null, - price: (decimal) not null
和
Artical: - id:(int) primary key, autoincrement, not null, - title:(varchar) not null, - price: (decimal) not null, - book_id:(int) foreign key referencing book
我已經在 Book 表中有幾本書,而 Artical 表是空的,我想在 Artical 中有插入語句,它將插入數據並正確填寫 book_id 外鍵。我提出了這個不好的說法,但我覺得我很接近,這裡是:
INSERT INTO Artical (id,title,price,book_id) VALUES ( null, 'Six faces of shadow', 15, ( SELECT book.id FROM book JOIN Artical AS ar WHERE book.title = ar.title ) );
正確的語法是僅使用值或查詢,而不是兩者的混合。
但是,您可以在查詢中插入值。
INSERT INTO Artical (title, price, book_id) SELECT 'Six faces of shadow', 15, book.id FROM book JOIN Artical AS ar ON book.id = ar.book_id
另請注意,您不應該加入
title
列,特別是因為您已經在兩個表之間建立了外鍵關係。您可以將 NULL 插入 auto_increment 列,但也可以將其省略。
最後但可能是最重要的提示:您的表格未正確規範化。桌子 Artical 是乾什麼用的?書名和價格已經在 Book 表中。你應該重新考慮一下。但這不在這個問題的範圍內。
插入數據有兩種方式:
- 如果您必須在
Artical
特定的表中插入數據,book title
請執行以下操作INSERT INTO Artical (title, price, book_id) VALUES ( 'Six faces of shadow', 15, ( SELECT book_id FROM book WHERE book.title = "Six faces of shadow" ) );
- 如果您想添加所有帶有 id 的書名,請執行以下操作
INSERT INTO Artical (title, price, book_id) SELECT title, price, book_id FROM book
希望這個幫助!!!