美好的一天。
我正在尝试在新表(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,依此类推直到最后。
请查看图片以获取说明:
那么,如何“插入新表”,以便每次插入都从第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搜索了答案,但坦率地说,我不知道搜索什么/方式。
答案 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