插入并加入mysql

时间:2015-06-02 18:28:09

标签: mysql sql join

我可以通过连接表将数据插入MySQL吗?

我以这种方式创建了我的表格,但我无法改变它。 ( 1 .Products。 2 .Photo和产品ID。 3 .Photos。)

我在想这样的事情:

INSERT INTO products JOIN photoandproductids 
ON products.productid = photoandproductids.productid 
JOIN photos ON 
photos.photoid=photoandproductids.photoid 
(productname,productcategory,imagepath,imagepath,imagepath,) VALUES 
('test','test','photos/photo1','photos/photo2','photos/photo3')

此查询有什么问题?

1 个答案:

答案 0 :(得分:0)

没有。这不能在单个INSERT语句中完成。要将行插入三个表,需要三个INSERT语句。

目前尚不清楚你想要达到的目标。

您可以考虑一些,例如调用执行要执行的多个INSERT语句的存储过程。但是如果没有规范,我们就无法提出任何好的建议。

我们可能会假设您正在使用AUTO_INCREMENT id列。完成多个插入的一种可能模式是这样的:

 -- repeat this for each product to be inserted

    INSERT INTO products (product_name, product_category) VALUES ('test','test');
    -- if insert is successful, get the value assigned to AUTO_INCREMENT col
    SELECT LAST_INSERT_ID();
    -- save the value returned!


 -- repeat this for each photo to be inserted

    INSERT INTO photo (imagepath) VALUES ('photos/photo1');
    -- if insert is successful, get the value assigned to AUTO_INCREMENT col
    SELECT LAST_INSERT_ID();
    -- save the value returned!
    -- use the saved id values to insert to the linkage table

    -- repeat this for each productid that the photo is associated with
       INSERT INTO photoandproductids (productid, photoid) VALUES (?,?);

如果您不添加产品,则需要运行SELECT语句来获取产品。也就是说,如果表单中的id不可用,则从用户选择的下拉列表项中获取。