开发者

MySQL中INSERT+SELECT的使用方式

开发者 https://www.devze.com 2024-10-25 08:58 出处:网络 作者: JMzz
目录mysql中INSERT+SELECT的使用使用场景1.两表之间2.三表之间3.多表之间MySQL中SELECT INTO FROM的使用总结MySQL中INSERT+SELECT的使用
目录
  • mysql中INSERT+SELECT的使用
    • 使用场景
      • 1.两表之间
      • 2.三表之间
      • 3.多表之间
    • MySQL中SELECT INTO FROM的使用
    • 总结

      MySQL中INSERT+SELECT的使用

      使用场景

      通过一条sql语句实现从多个表中组合字段然php后插入到另外的一个新表中。

      1.两表之间

      从一张表中查编程客栈出字段的值插入到另一张表中对应的字段

      INSERT INTO tab1(field1,field2) SELECT field1,fiephpld2 FROM tab2;

      2.三表之间

      从两张表中查出字段的值插入到另一张表中对应的字段

      INSERT INTO tab1 (field1, field2) 
      SELECT * 
      FROM
        (SELECT 
          tab2.field1, tab3.field2 
        FROM tab2 
        JOIN tab3 
          ON tab2.field = tab3.filed) AS tab ;

      3.多表之间

      从多张表中查出字段的值插入到另一张表中对应的字段

      INSERT INTO tab1 (field1, field2, field3, ... ) 
      SELECT * 
      FROM
        (SELECT 
          tab2.field1, tab3.field2, tZyvFIab4.field3,  ...
        FROM tab2 
        JOIN tab3 
          ON tab2.field = tab3.filed
        JOIN tab4 
          ON tab2.field = tab4.filed  
          ...
          ) AS tab ;

      通过join查询将分别来自表tab2和表tab3的字段进行了组合,然后再通过select嵌套查询插入到ZyvFI表tab1中,如果需要不止2个表,那么可以多个join的形式来组合字段。

      需要注意的是嵌套查询部分最后一定要有设置表别名。

      这种方式要求目标表必须存在。

      还有一种不需要目标表的存在,就是SELECT INTO

      MySQL中SELECT INTO FROM的使用

      作为另一种复制表数据的手段,其得到的结果与上述的insert into select是一样。

      不过select into不要求目标表存在,目标表会在查询过程中自动创建。

      select[column1,column2...] into [目标表名] from [原始表名]

      总结

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

      0

      精彩评论

      暂无评论...
      验证码 换一张
      取 消

      关注公众号