簡體   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