【问题标题】:SQL Insert into a table using queries from two other tablesSQL 使用来自其他两个表的查询插入到表中
【发布时间】:2022-01-16 13:56:25
【问题描述】:

我有一个标签表和一个产品表:

标签

ID  | Name | 
----|-------
1   | "Wunderbar!"
2   | "Brand-new"
3   | "Electrified!"

产品

 ID  | Name 
-----|---
1    | "Go-karts"
2    | "Rocketsleds"
3    | "Turbopants"
4    | "Sporks"

我有一个 CSV 文件中的标签和产品列表,我需要生成将行插入到 ProductTags 表中的 SQL。因此,例如,给定指令“Electrified”->“Sporks”、“Electrified”->“Rocketsleds”和“Wunderbar!” -> “Turbopants”我需要生成 SQL,使表格看起来像:

产品标签

ID | TagId | ProdID
---|-------|-------
1  | 3     | 4
2  | 3     | 2
3  | 1     | 3

我尝试使用一对子查询以及类似这个 SO question 中的连接样式解决方案来构造 SQL,但在几个小时之后,仍然没有得到正确的语法。

具体的 SQL 版本适用于 MySQL/InnoDB。感谢您的任何帮助/指点。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    使用IN 就可以了

    INSERT INTO product_tags ( tag_id, product_id )
    SELECT tag_id, product_id
    FROM tags
    CROSS JOIN products
    WHERE (tag_name, product_name) IN (
     ('Electrified', 'Sporks'),
     ('Electrified', 'Rocketsleds'),
     ('Wunderbar!', 'Turbopants')
    );
    

    demo

    【讨论】:

    • 这很好用。我不知道交叉加入是一回事。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-03-07
    • 2023-01-12
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多