首页 > 数据库 >SQL 将查询结果插入到另一张表中

SQL 将查询结果插入到另一张表中

时间:2023-09-18 15:34:19浏览次数:38  
标签:INSERT Persons INTO SQL 插入 表中 WHERE SELECT

INSERT INTO

  1. 如果两张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:

    INSERT INTO 目标表 SELECT * FROM 来源表 WHERE 条件;
    

    例如,要将 test 表插入到 newTest 表中,则可以通过如下SQL语句实现:

    INSERT INTO newTest SELECT * FROM test;
    
  2. 如果只希望导入指定字段,可以用这种方法:

    INSERT INTO 目标表(字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表 WHERE 条件;
    

    请注意以上两表的字段必须一致(位置一致,类型一致),否则会出现数据转换错误。

    例如,我需要把商品表 Commodity 中符合条件(状态为0,并且价格大于500的商品ID)的数据插入到商品标签表 CommodityTag 中:

    INSERT INTO CommodityTag(tagid, commodityid, status, createtime, updatetime)
    SELECT 'TG191219290000000', commodityid, 0, NOW(), NOW() FROM Commodity WHERE commoditystatus = 0 AND price > 500;
    

SELECT INTO

SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。

  1. 两张表字段完全一致,全部字段数据进行拷贝。

    SELECT * INTO Persons_backup FROM Persons WHERE City='Beijing';
    
  2. 拷贝指定字段。

    SELECT LastName, FirstName INTO Persons_backup FROM Persons WHERE City='Beijing';
    
  3. IN 子句可用于向另一个数据库 Backup.mdb 中拷贝表。

    SELECT * INTO Persons IN 'Backup.mdb' FROM Persons WHERE City='Beijing';
    
  4. 多个表关联选取数据。

    SELECT P.LastName, O.OrderNo INTO Persons_Order_Backup
    FROM Persons P INNER JOIN Orders O ON P.Id_P=O.Id_P;
    

标签:INSERT,Persons,INTO,SQL,插入,表中,WHERE,SELECT
From: https://www.cnblogs.com/XuPengLB/p/17712081.html

相关文章

  • Ubuntu20.04安装Mysql8主从
    Ubuntu20.04安装Mysql8主从一.主数据库安装1.下载安装包并初始化数据库#进入目录cd/opt#下载安装包wgethttps://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-linux-glibc2.12-x86_64.tar.xz#解压tar-xvfmysql-8.0.20-linux-glibc2.12-x86_64.tar.xz......
  • SQLServer递归触发器在KES中的一次改造分析
    文章概要:某项目将数据从SQLSERVER迁移到KES。其中SQLSERVER中触发器用到了TRIGGER_NESTLEVEL()函数,KES并不能直接支持该函数。起初在分析该问题时想复杂了本文做了一次记录。实际上在kes兼容sqlsevrer基础语法,直接简单使用SYS_TRIGGER_DEPTH()替换TRIGGER_NESTLEVEL()函......
  • MySQL篇:第七章_详解mysql存储过程&函数
    存储过程含义:一组经过预先编译的sql语句的集合好处:1、提高了sql语句的重用性,减少了开发程序员的压力2、提高了效率3、减少了传输次数分类:1、无返回无参2、仅仅带in类型,无返回有参3、仅仅带out类型,有返回无参4、既带in又带out,有返回有参5、带inout,有返回有参注意:in、o......
  • DVWA靶场通关- SQL Injection(SQL注入)
    BruteForce(暴力(破解))、CommandInjection(命令行注入)、CSRF(跨站请求伪造)、     FileInclusion(文件包含)、FileUpload(文件上传)、InsecureCAPTCHA(不安全的验证码)、    SQLInjection(SQL注入)、SQLInjection(Blind)(SQL盲注)、XSS(DOM)(基于DOM树)、    XSS(Reflec......
  • MySQL篇:第六章_详解mysql视图
    周末有朋友来上海没来得及更新,特此更两篇以正身视图含义:理解成一张虚拟的表视图和表的区别: 使用方式 占用物理空间 视图 完全相同 不占用,仅仅保存的是sql逻辑 表 完全相同 占用视图的好处:1、sql语句提高重用性,效率高2、和表实现了分离,提高了安全性视......
  • Navicat连接SQLServer提示:未发现数据源名并且未指定默认驱动程序
    问题:Navicat连接SQLServer提示:未发现数据源名并且未指定默认驱动程序解决方式一:可以直接安装Navicat根目录(安装目录)下的sqlncli.msi(32位)或sqlncli_x64.msi(64位) 双击开始安装,一直下一步,正常安装完成的话,重启下Navicat就没有问题了,可以正常连接了。解决方式一:在官......
  • MySQL篇:第五章_详解DDL语言
    DDL语句库和表的管理库的管理:一、创建库createdatabase库名二、删除库dropdatabase库名表的管理:1.创建表CREATETABLEIFNOTEXISTSstuinfo( stuIdINT, stuNameVARCHAR(20), genderCHAR, bornDateDATETIME);DESCstudentinfo;2.修改表alter语法:ALTER......
  • Linux安装MySQL(8.0)
    Linux安装MySQL(8.0)​ 下载安装包,官网地址:http://dev.mysql.com/downloads/mysql/​ 将安装包上传至服务器并解压,eg:tar-zxvfmysql-8.0.34-linux-glibc2.17-x86_64.tar.gz​ 将解压后的文件夹移动到/usr/local/mysql路径下并重命名,eg:mvmysql-8.0.34-linux-glibc2.17-x86_......
  • KingbaseESV8R6中查看索引常用sql
    前言KingbaseES具有丰富的索引功能,对于运行一段时间的数据库,经常需要查看索引的使用大小,使用状态等。尤其重复索引的存在,有时会因为索引过多而造成维护成本加大和减慢数据库的运行速度。下面是经常使用的查看索引的sql。1.查看表上索引个数,是否唯一,表与索引大小。SELECTCO......
  • 第04章 Spark SQL常用参数
    目录第04章SparkSQL常用参数24.1AQE优化控制24.2SHUFFLE分区个数控制34.3SHUFFLE输入大小控制34.4TASK内存参数34.5TASK同时运行个数34.6其它REDUCE阶段相关参数44.7如何预估每个REDUCE任务处理的数据量6第04章SparkSQL常用参数4.1AQE优化控制通过设置spark.sq......