[英]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.