假设表结构如下:

表名:uf_kcgl 字段:kcid、wlbm、wlmc、kf、kz

表名:uf_kcgl_dt1 字段:mainid、wlbm、wlmc、kf、kz

则 SQL 语句如下:

INSERT INTO uf_kcgl (wlbm, wlmc, kf, kz)
SELECT wlbm, wlmc, kf, kz
FROM (
    SELECT 'A001' AS wlbm, '物料1' AS wlmc, 1 AS kf, 2 AS kz
    UNION ALL
    SELECT 'A002' AS wlbm, '物料2' AS wlmc, 2 AS kf, 3 AS kz
) t
WHERE NOT EXISTS (SELECT 1 FROM uf_kcgl WHERE kcid IS NULL);

INSERT INTO uf_kcgl_dt1 (mainid, wlbm, wlmc, kf, kz)
SELECT kcid, wlbm, wlmc, kf, kz
FROM (
    SELECT NULL AS kcid, 'A003' AS wlbm, '物料3' AS wlmc, 3 AS kf, 4 AS kz
    UNION ALL
    SELECT NULL AS kcid, 'A004' AS wlbm, '物料4' AS wlmc, 4 AS kf, 5 AS kz
    UNION ALL
    SELECT 1 AS kcid, 'A005' AS wlbm, '物料5' AS wlmc, 5 AS kf, 6 AS kz
    UNION ALL
    SELECT 2 AS kcid, 'A006' AS wlbm, '物料6' AS wlmc, 6 AS kf, 7 AS kz
) t
WHERE NOT EXISTS (SELECT 1 FROM uf_kcgl WHERE kcid = t.kcid);

解释:

第一个 INSERT 语句,将条件 kcid 为空的记录插入到表 uf_kcgl 和表 uf_kcgl_dt1 中。这里用一个子查询生成了两条记录,可以根据实际需求修改。

第二个 INSERT 语句,将条件 kcid 不为空的记录插入到表 uf_kcgl_dt1 中。这里也用一个子查询生成了四条记录,其中两条 kcid 为 NULL,两条 kcid 分别为 1 和 2。对于 kcid 为 NULL 的记录,它们会被插入到表 uf_kcgl 中,因为第一个 INSERT 语句已经保证了 kcid 为空的记录只会插入一次。对于 kcid 不为空的记录,它们只会被插入到表 uf_kcgl_dt1 中,且条件为 mainid = kcid

用case when写一个sql语句满足条件kcid为空时把wlbmwlmckfkz插入到表uf_kcgl和表uf_kcgl_dt1中;kcid字段有值时只插入表uf_kcgl_dt1条件为mainid = kcid。

原文地址: https://www.cveoy.top/t/topic/fcpJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录