【发布时间】:2015-03-30 05:22:37
【问题描述】:
我有一个直接导入网站数据库的产品目录。每个产品行都列出了其类别和子类别。导入产品后,我运行此 SQL 以将不同的类别添加到数据库(用于根据其 id 创建导航 URL):
INSERT INTO categories (name) SELECT Distinct category FROM catalog_products;
现在,我想将子类别也添加到它自己的表中,但要引用它的父类别的 ID,这就是我遇到的问题。
示例:产品“SDH 20”属于“诊断”类别(“类别”表中的 ID 为 5)和子类别“血液学”。然后,“子类别”表必须将 Hematology 列为类别 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 - Subquery returns more than 1 row" 错误。
是否可以使用读取 catalog_products 行的 SQL 填充“子类别”表的名称和 idCategory?如果是这样,我的 SQL 出了什么问题?
【问题讨论】:
-
如果可以,请使用几行示例数据和预期结果或SQL Fiddle 编辑您的问题,因为这将帮助其他用户重现您的问题。