[英]How to insert many rows into two relative tables in mysql?
我想在兩個相對表中插入許多行。 我使用LAST_INSERTED_ID()將數據插入第二個表中,但是此ID不變
BEGIN;
insert into themes (tutorID, year, theme_name, degreeID)
select tutorID, year, work_name, degreeID from journal;
INSERT INTO assigned_students (studentID, tutorID, themeID, writing_language_id, work_typeID)
select studentID, tutorID, LAST_INSERT_ID(), 0, 4 from journal;
COMMIT
嘗試一下,在此聲明一個INT
,然后設置該值,請參見下文。
BEGIN;
declare lastid INT;
insert into table1 (tutorID, year, name, degreeID)
select sm.tutorID, year, namework, dt.degreeID from table3;
set lastid = (SELECT LAST_INSERT_ID());
INSERT INTO table2 (studentID, tutorID, table1ID, writing_language_id, work_typeID)
select distinct StudentID, tutorID, lastid , 0, 4 from table3;
COMMIT;
您也可以嘗試一下。
BEGIN;
insert into table1 (tutorID, year, name, degreeID)
select sm.tutorID, year, namework, dt.degreeID from table3;
INSERT INTO table2 (studentID, tutorID, table1ID, writing_language_id, work_typeID)
select distinct StudentID, tutorID, (SELECT LAST_INSERT_ID()), 0, 4 from table3;
COMMIT;
還可以使插入的assigned_students引用themes
剛插入的行(這樣您就可以獲得其自動生成的ID):
BEGIN;
insert into themes (tutorID, year, theme_name, degreeID)
select themeID, year, work_name, degreeID from journal;
INSERT INTO assigned_students (studentID, tutorID, themeID, writing_language_id, work_typeID)
select j.studentID, j.tutorID, t.THEME_ID_COLUMN_NAME, 0, 4
from
journal j
inner join themes t on j.themeID = t.tutorid;
COMMIT
在這里,我們看到首先我們在主題中插入了一些內容,我想它會為主題的pk列自動生成一些ID。
因此,我們然后將日記加入到我們插入的那些行中,以便我們可以檢索生成的ID
我不知道themes
的PK列叫什么,因此您必須將THEME_ID_COLUMN_NAME
替換為正確的值
請注意,您可能必須on j.themeID = t.tutorid
指定其他列,而不僅僅是tutorid,如果這不能唯一地標識一行
我還讀到 ,對於自動增量列,可以確保ID是連續的,因此您可以獲得LAST_INSERTED_ID()(即mos中間插入的行)以及ROW_COUNT,因此知道了插入ID的范圍,並可以使用選擇/加入日記數據的方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.