我在 MySQL 中的查询遇到问题,我已经在很多地方寻找答案。 我想要的是将数据插入表 1 的第 2 列和第 3 列,以及表 2 和表 3 的第 2 列和第 2 列中的数据。
我有下表。
Table1 (products):
Column1 = productId (Autoincrementing int)
Column2 = fkCategory (int, Foreign key pointing to the categoryId)
Column3 = fkBrand (int, Foreign key pointing to the brandId)
Table2 (categories):
Column1 = categoryId (autoincrementing int)
Column2 = category (Varchar)
Table3 (brands):
Column1 = brandId (Autoincrementing int)
Column2 = brand (Varchar)
当我进行以下查询时,一切正常,它在表 1 的第 1 列(自动增量键)和第 2 列(我想要的数据)中插入了一行数据,但在第 3 列中没有任何数据:
INSERT INTO products (fkCategory)
Select categories.categoryId
FROM categories
WHERE category = 'Bluser';
现在,我想使用表 2 和表 3 中的数据在同一查询内向表 1 中同一行的第 2 列和第 3 列添加一个值,并尝试进行以下查询。这给了我一条消息:未知列“products.fkBrand”
INSERT INTO products (fkCategory, fkBrand)
Select categories.categoryId, brands.brandId
FROM categories
INNER JOIN brands ON brands.brandId = products.fkBrand
WHERE category = 'Bluser' and brand = 'Ganni';
我还尝试了以下查询:
INSERT INTO products (fkCategory, fkBrand)
Select categories.categoryId, brands.brandId
FROM products
INNER JOIN categories ON categories.categoryId = products.fkCategory
INNER JOIN brands ON brands.brandId = products.fkBrand
WHERE category = 'Bluser' and brand = 'Ganni';
这个在运行时没有给我带来任何复杂性,但不会向 table1 添加任何值。
我有点迷失了,我想我的问题出在Where子句或我加入它的方式上。我尝试了很多其他查询,但我不想在问题线程中添加太多代码。
非常感谢任何帮助:)。美好的一天!
最佳答案
您不应该加入表产品,因为在插入之前表是空的并且会导致空集。以下查询执行表 2 和表 3 的交叉联接,生成要插入到产品中的结果集:
INSERT INTO products (fkCategory, fkBrand)
Select c.categoryId, b.brandId
FROM categories c,brands b
WHERE c.category = 'Bluser' and b.brand = 'Ganni';
关于java - 使用联接将表 2 和表 3 中的数据添加到表 1 时出现 MySQL 查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23698151/