gpt4 book ai didi

MySQL:使用来自不同表的选择插入多个列

转载 作者:行者123 更新时间:2023-11-29 23:07:15 25 4
gpt4 key购买 nike

我有一个直接导入到网站数据库的产品目录。每个产品行都会列出其类别和子类别。导入产品后,我运行此 SQL 将不同类别添加到数据库(用于根据其 id 创建导航 URL):

INSERT INTO categories (name) SELECT Distinct category FROM catalog_products;

现在,我想将子类别添加到它自己的表中,但要引用其父类别的 ID,这正是我遇到的问题。

示例:产品“SDH 20”属于“诊断”类别(“类别”表上的 ID 为 5)和子类别“血液学”。然后,“子类别”表必须将血液学列为类别 ID 为 5,这是类别表上“诊断”的 ID。这是我尝试过的 SQL:

INSERT INTO subcategories (name, idCategory) SELECT Distinct subcategory FROM catalog_products UNION ALL SELECT id from category WHERE categories.name = (SELECT catalog_products.category FROM catalog_products);

但我收到“#1242 - 子查询返回超过 1 行” 错误。

是否可以使用读取catalog_products 行的一个SQL 来填充“子类别”表的名称和idCategory?如果是这样,我的 SQL 出了什么问题?

最佳答案

如果您的子选择返回多于一行,则必须使用“IN”:

INSERT INTO subcategories (name, idCategory) 
SELECT Distinct subcategory FROM catalog_products
UNION ALL SELECT id from category WHERE
categories.name in (SELECT catalog_products.category FROM catalog_products);
^^

关于MySQL:使用来自不同表的选择插入多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28240892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com