mysql將一個表的數據導入到另一個表


mysql將一個表的數據導入到另一個表

https://blog.csdn.net/qq_33697774/article/details/118698380

將一個表的數據插入到另外一個表中的幾種情況如下:

 

                微信掃一掃關注我

 

1.如果2張表的字段一致,並且希望插入全部數據,可以用這種方法:
     INSERT INTO 目標表 SELECT * FROM 來源表;
     例如:insert into insertTest select * frominsertTest2;

2.如果只希望導入指定字段,可以用這種方法:
     INSERT INTO 目標表 (字段1, 字段2, ...) SELECT 字段1, 字段2,... FROM 來源表;(這里的話字段必須保持一致)
     例如:insert into insertTest2(id,name) select id,name from insertTest2;

 注意:如果目標表與來源表主鍵值相同則會出現添加錯誤,主鍵值不同才能插入


3.如果您需要只導入目標表中不存在的記錄,可以使用這種方法:   
    INSERTINTO 目標表 (字段1, 字段2, ...) SELECT字段1, 字段2, ... FROM來源表 
    WHERE not exists (select * from目標表 where 目標表.比較字段 =來源表.比較字段); 
   例如:
     1>.插入多條記錄:
       insert intoinsertTest2(id,name)select id,name frominsertTest
     where not exists (select * frominsertTest2 whereinsertTest2.id=insertTest.id);


     2>.插入一條記錄:
       insert intoinsertTest (id, name) SELECT 100,'liudehua'  FROMdual 
             WHERE notexists (select * from insertTest whereinsertTest.id = 100);

4、如果需要導入的目標表字段比來源表的字段多,將來源表的數據導入再加上幾個字段組成目標表   的數據
  INSERT INTO 目標表 (目標字段1,目標字段2,字段1, 字段2,...)
     select 目標字段1,目標字段2, 字段1, 字段2,...  FROM來源表   
   目標字段1,目標字段2:這是目標表比來源表多出的字段
  例如:
    insert into insertTest2(目標字段1,目標字段2,id,name) select 目標字段1,
         目標字段2, id,name from insertTest  whereinsertTest2.id=insertTest.id;
     目標字段1,目標字段2:可以先設占位符,在設置值。也可以直接在語句中賦值
    insert into insertTest2(目標字段1,目標字段2,id,name) select  a1,
         a2, id,name from insertTest  whereinsertTest2.id=insertTest.id;

5、對上述4的解析
   select a1, a2, id,name from insertTest     
     這里在表 insertTest里本身沒有a1,a2兩個字段名,當使用這個查詢語句時,會查 出 insertTest表的所有字段值,並在表數據的前面加上了列名為a1,a2的字段,並且列名為a1的值全為a1,列名為a2的值全為a2,並且a1,a2不能為變量,如果是變量,sql語句會把它當做表字段,而表中不存在這個字段,會報錯

 總結:即可以向一個表中查詢不存在的列名,這里不存在的列名必須是實際值或占位符,不能是變量

 

                微信掃一掃關注我


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM