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

如何通过关联查询仅向main.item_vendor插入不存在的记录?

实现仅插入不存在的记录到main.item_vendor表

你可以通过以下两种常用SQL写法,结合原有查询逻辑,实现仅插入200000699这条不存在的记录:

方法一:使用NOT EXISTS子查询

这种写法直接检查目标item_id是否已存在于关联后的记录中,仅当不存在时执行插入:

INSERT INTO "main"."item_vendor" ("item_id", "vendor_id", audit_by, currency_id )
SELECT '200000699', ?, ?, ?
WHERE NOT EXISTS (
    SELECT 1
    FROM main.item_vendor
    JOIN main.item ON item.id = main.item_vendor.item_id
    WHERE "main"."item"."id" = '200000699'
);

逻辑说明:子查询会验证200000699是否在关联后的有效记录里,只有子查询返回空(即无匹配)时,外层的SELECT才会生成待插入数据,触发插入操作。

方法二:使用LEFT JOIN + IS NULL过滤

通过左关联筛选出未匹配的目标item_id,再执行插入:

INSERT INTO "main"."item_vendor" ("item_id", "vendor_id", audit_by, currency_id )
SELECT target.item_id, ?, ?, ?
FROM (SELECT '200000699' AS item_id) AS target
LEFT JOIN (
    SELECT main.item_vendor.item_id
    FROM main.item_vendor
    JOIN main.item ON item.id = main.item_vendor.item_id
) AS existing ON target.item_id = existing.item_id
WHERE existing.item_id IS NULL;

逻辑说明:先构造包含目标item_id的临时表,再和原有查询得到的已存在记录左关联,最后仅保留无匹配的行(existing.item_id IS NULL)进行插入。

注意:将语句中的?替换为实际需要插入的vendor_id、audit_by、currency_id对应值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:01:21