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