我想表达以下INSERT声明:
INSERT
context.insertInto(TABLE A) .set(<FIELD A, FIELD B>, context.select(FIELD A, FIELD B).from(B).where(...)) .set(... other field of table A ...) .set(... other field of table A ...) .set(... other field of table A ...) .returning() .fetch()
子选择返回一行,其中包含两列(FIELD A和FIELD B),需要将其插入到target中TABLE A。这样做的原因是,<FIELD A, FIELD B>是的主键TABLE B。TABLE A是指TABLE B(外键)。
FIELD A
FIELD B
TABLE A
<FIELD A, FIELD B>
TABLE B
这可能吗?
我不确定首先使用哪种SQL方言是否可能通过INSERT .. VALUES,但是您当然可以使用INSERT .. SELECT以下方式表达这种查询:
INSERT .. VALUES
INSERT .. SELECT
INSERT INTO a (a, b, x, y, z) SELECT a, b, ... other value ..., ... other value ..., ... other value ... FROM b WHERE ... RETURNING *;
或与jOOQ
context.insertInto(TABLE A, ... columns ...) .select( select( FIELD A, FIELD B, ... other field of table A ..., ... other field of table A ..., ... other field of table A ...) .from(B) .where(...)) ) .returning() .fetch()