You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询,基于关联条件将两表数据插入第三表指定列?

解决方案

可以通过多表关联查询实现需求,核心是利用Table_Categories的层级结构(品牌→车型→世代)匹配Table_one的对应字段,最终将结果插入Table_two。

SQL 语句

INSERT INTO Table_two (name, parent)
SELECT 
    t1.engine,
    gen.id
FROM Table_one t1
INNER JOIN Table_Categories brand 
    ON brand.name = t1.brand 
    AND brand.parent = 1
INNER JOIN Table_Categories model 
    ON model.name = t1.model 
    AND model.parent = brand.id
INNER JOIN Table_Categories gen 
    ON gen.name = CAST(t1.generation AS VARCHAR) 
    AND gen.parent = model.id
WHERE t1.engine NOT IN (SELECT name FROM Table_two);

语句说明

  • 三次INNER JOIN依次匹配层级关系:
    • 匹配品牌:找到Table_Categories中parent=1(顶级分类)且名称与Table_one.brand一致的记录,获取品牌ID
    • 匹配车型:基于品牌ID,找到对应车型的分类记录,获取车型ID
    • 匹配世代:基于车型ID,找到对应世代(Table_one.generation)的分类记录,其ID就是要插入的parent值
  • CAST(t1.generation AS VARCHAR):统一数值类型的generation与字符串类型的Table_Categories.name,确保匹配有效
  • WHERE子句:避免插入Table_two中已存在的engine值(比如现有数据中的ph25)

内容的提问来源于stack exchange,提问作者Serj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 21:01:00