sql_插入一张表的部分字段需要查询另一张表

插入一张表的数据来自另一张表:

INSERT INTO 表A(
    字段a,
    字段b,
    字段c
)
SELECT
    字段a',
    字段b',
    字段c'
FROM
    表B
WHERE
    条件

当只是某些字段需要另一张表的数据时:

INSERT INTO 表A(
    字段a,
    字段b,
    字段c,
    字段d
)
SELECT
    字段a',
    '要插入的值(例:insertTest)',      // 不为在表B查询到的值  用''包起来表示字符串,方法,数值不用包,按平时使用就可
    字段c',
    字段d'
FROM
    表B
WHERE
    条件

在myBatis中,自己要插入的数据可直接用#{valueName}写

INSERT INTO iot_data (
    id,
    device_id,
    data,
    report_date,
    create_by,
    create_date,
    update_by,
    update_date,
    remarks,
    del_flag
) SELECT
    #{id},
    id,     //此id为要在其他表查询的数据
    #{data},
    #{reportDate},
    #{createBy.id},
    #{createDate},
    #{updateBy.id},
    #{updateDate},
    #{remarks},
    #{delFlag}
FROM iot_device 
WHERE out_device_sn = #{device.outDeviceSn}

猜你喜欢

转载自blog.csdn.net/feiqinbushizheng/article/details/81237194