INSERT INTO new table-所有插入均从同一行开始

时间:2018-07-23 13:37:52

标签: mysql

美好的一天。

我正在尝试在新表(tblTEST)中插入多个“选择查询结果”。

我希望每个选择查询结果都“填充” tblTEST中的相应列。

INSERT INTO tblTEST (SkuNo)
SELECT 
a.SKU_NO FROM tbl0SKU_NO a 
INNER JOIN tbl1SKUS b ON a.SKU_NOID=b.SkuNo
;

INSERT INTO tblTEST (Brand)
SELECT
c.Brand FROM tbl0Brands c
INNER JOIN tbl1SKUS d ON c.BrandID=d.Brand
;

INSERT INTO tblTEST (ProductName)
SELECT
e.ProductName FROM tbl0ProductNames e
INNER JOIN tbl1SKUS f ON e.ProductNameID=f.ProductName
;

在粘贴的代码上方,确实将数据插入了tblTEST,BUT中,并以填充第一列(SKUNo)的值的方式进行了处理,而表中的所有其他行均为“ null”。插入第一列的值之后,然后插入第二列(品牌)的值,并且表中的其他行再次为NULL,依此类推直到最后。

请查看图片以获取说明: Fig.1:Insert into tblTEST_result

那么,如何“插入新表”,以便每次插入都从第1行开始? (我不知道问题是否明确,对此我表示歉意) 每个“选择查询”的行数相同。

我应该在第一次INSERT INTO之后使用UPDATE吗?

INSERT INTO tblTEST (SkuNo)
    SELECT 
    a.SKU_NO FROM tbl0SKU_NO a 
    INNER JOIN tbl1SKUS b ON a.SKU_NOID=b.SkuNo
    ;

    **UPDATE** tblTEST (Brand)
    SELECT
    c.Brand FROM tbl0Brands c
    INNER JOIN tbl1SKUS d ON c.BrandID=d.Brand
    ;

如果是这样,UPDATE的语法是什么?

有关格式化“ INSERT INTO”的其他建议会有所帮助。

我用Google搜索了答案,但坦率地说,我不知道搜索什么/方式。

2 个答案:

答案 0 :(得分:2)

三向联接怎么样?

INSERT INTO tblTEST (SkuNo, Brand, ProductName)
SELECT 
    b.SKU_NO,
    c.Brand,
    d.ProductName
FROM tbl1SKUS a
INNER JOIN tbl0SKU_NO b
    ON b.SKU_NOID = a.SkuNo
INNER JOIN tbl0Brands c
    ON c.BrandID = a.Brand
INNER JOIN tbl0ProductNames d
    ON d.ProductNameID = a.ProductName

如果要在SQL中插入新行,通常希望将所有信息都包括在该插入语句中。在所有表之间使用联接即可达到目的。如果在插入记录后确实需要修改记录,则必须使用update。但是更新可能不是您想要的东西的路。

答案 1 :(得分:1)

使用tbl1SKUS插入其他表来进行插入

INSERT INTO tblTEST (SkuNo,Brand,ProductName )
SELECT 
a.SKU_NO,c.Brand, e.ProductName FROM tbl1SKUS b
INNER JOIN tbl0SKU_NO a ON a.SKU_NOID=b.SkuNo,
INNER JOIN tbl0Brands c ON c.BrandID=b.Brand,
INNER JOIN tbl0ProductNames e ON e.ProductNameID=b.ProductName