繁体   English   中英

从表2到表3的SQL INSERT SELECT

[英]SQL INSERT SELECT from Table2 to Table3

我正在尝试将Table1和Table2的ID插入Table3。我的表设计是:

Table1:
Id_Table1
field1 etc.

Table2:
Id_Table2
field1 etc.

Table3:
Id_Table3
Id_Table1_FK
Id_Table2_FK

当我保存表1的记录时,我将执行此操作。 同时,我的表单中有Datagridview,它使用comboboxcell来查看Table2中的记录。 当我从表2中选择一些记录时,两个ID(表1和表2)都需要插入到表3中。

到目前为止,这是我的代码(显然是错误的):

INSERT INTO Table3 (Id_Table3, Id_Table1, Id_Table2) 

SELECT Id_Table2 FROM Table2 WHERE serial_no=" & MyDGV.CurrentRow.Cells(0).Value.ToString

VALUES (Id_Table3_seq.nextval, Id_Table1_seq.currval,????)

因此,我的问题卡在Id_Table2上,它需要首先由Datagridview.Row单元格值选择,然后将结果像参数一样传递给Table3。 有什么建议么 ? 可能很简单,我只是不知道该如何开始...

如果我的观点正确,也许这就是您所需要的?

INSERT INTO Table3 (Id_Table3, Id_Table1, Id_Table2) 
VALUES (Id_Table3_seq.nextval, Id_Table1_seq.currval,(
SELECT Top 1 Id_Table2 FROM Table2 WHERE serial_no='" & MyDGV.CurrentRow.Cells(0).Value.ToString & "'
))

编辑:添加了Top 1 ,以确保子查询将只返回1个记录集。 如果您选择的字段是唯一的,则是可选的。

使用SELECT返回常量值:

INSERT INTO Table3 (Id_Table3, Id_Table1, Id_Table2) 
select Id_Table3_seq.nextval, 
       Id_Table1_seq.currval,
       Id_Table2
FROM Table2 
WHERE serial_no='" & MyDGV.CurrentRow.Cells(0).Value.ToString & "';

通常,您不应将值连接到SQL字符串中。 使用带有参数(占位符)的预备语句(不知道在VB.net中是如何完成的)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM