mysql insert into as_mysql insert into select使用方法详解

mysql insert into as_mysql insert into select使用方法详解mysqlinsertintoselect使用方法详解2017-11-2215:47我们先来看看mysqlinsertintoselect的语法规则。INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE][INTO]tbl_name[(col_name[,col_name]…)]SELECT…[ONDUPLICATEKEY…

大家好,又见面了,我是你们的朋友全栈君。

mysql insert into select使用方法详解2017-11-22 15:47

我们先来看看mysql insert into select的语法规则。

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]

[INTO] tbl_name

[(col_name [, col_name] …)]

SELECT …

[ON DUPLICATE KEY UPDATE assignment_list]

value:

{expr | DEFAULT}

assignment:

col_name = value

assignment_list:

assignment [, assignment] …

使用INSERT INTO…SELECT,您可以根据SELECT语句的结果快速地将多行插入到表中,该语句可以从一个或多个表中进行选择。

例如:

INSERT INTO tbl_temp2 (fld_id)

SELECT tbl_temp1.fld_order_id

FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

以下条件适用于 INSERT INTO… SELECT声明:

指定IGNORE忽略会导致重复键违规的行。

DELAYED被忽略INSERT … SELECT。

该INSERT语句的目标表可能出现在查询部分的FROM子句中SELECT。但是,不能插入到表中并从子查询中的同一个表中进行选择。

在从同一个表中选择并插入时,MySQL创建一个内部临时表来存放来自这些表的行SELECT,然后将这些行插入到目标表中。但是,不能使用INSERT INTO t … SELECT … FROM t何时 t是TEMPORARY 表,因为TEMPORARY表不能在同一语句中引用两次。

AUTO_INCREMENT 列照常工作。

为确保二进制日志可用于重新创建原始表,MySQL不允许并发插入INSERT … SELECT语句。

为避免SELECT在INSERT引用同一个表时引用不明确的列引用问题 , 请为该SELECT部分中使用的每个表提供唯一的别名,并使用适当的别名限定该部分中的列名。

SELECT没有ORDER BY子句的语句返回行 的顺序是不确定的。这意味着,在使用复制时,不能保证这样的SELECT返回在主服务器和从服务器上的顺序相同,这可能会导致它们之间的不一致。

为防止发生这种情况,请始终INSERT… SELECT使用ORDER BY 在主服务器和从服务器上生成相同行顺序的子句编写要复制的语句。

由于这个问题,在MySQL 5.5.18中, INSERT…SELECT ON DUPLICATE KEY UPDATE和INSERT IGNORE… SELECT语句被标记为不安全的基于语句的复制。

这些语句在使用基于语句的模式时会在错误日志中产生警告,并在使用MIXED模式时使用基于行的格式写入二进制日志 。(错误#11758262,错误#50439)

INSERT INTO SELECT影响使用诸如MyISAM使用表级锁的存储引擎的分区表 的语句 会锁定源表和目标表的所有分区。对于使用存储引擎(如InnoDB使用行级锁定)的表,不会发生这种情况 。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159642.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java递归详解_java难不难学

    Java递归详解_java难不难学学习目标:提示:这里可以添加学习目标例如:一周掌握Java入门知识学习内容:提示:这里可以添加要学的内容例如:1、搭建Java开发环境2、掌握Java基本语法3、掌握条件语句4、掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:1、周一至周五晚上7点—晚上9点2、周六上午9点-上午11点3、周日下午3点-下午6点学习产出:提示:这里统计学习计划的总量例如:1、技术笔记2遍2、CSDN技术博客3篇

    2022年9月18日
    0
  • LR模型推导_索洛模型的简单推导

    LR模型推导_索洛模型的简单推导概念 逻辑回归假设数据服从伯努利分布,通过极大化似然函数方法,运用梯度下降来求解参数,来达到将数据二分目的 sigmoid函数 sigmoid函数:,y为正样本的概率,1-y为负样本的概率 LR模型推导 设 另 那么对应 极大似然估计 似然函数 对数似然函数就是 将代入公式 对参数求偏导 参数更新 …

    2022年10月13日
    0
  • 中国历年人口出生数1983至2020岁_中国历年出生人口数据

    中国历年人口出生数1983至2020岁_中国历年出生人口数据1983年:2052万1984年:2050万1985年:2196万1986年:2374万1987年:2508万1988年:2445万1989年:2396万1990年:2374万1991年:2250万1992年:2113万1993年:2120万1994年:2098万1995年:2052万1996年:2057万1997年:2028万1998年:1934万1999年:1827万2000年:1765万2001年:1696万2002年:1641万2003年:1594万200.

    2022年9月5日
    3
  • nginx转发tcp请求保留ip_nginx请求转发

    nginx转发tcp请求保留ip_nginx请求转发在平时的开发中,可能有的服务在本地电脑是连接不上的,此时需要一个中间人来作为代理,帮助我们去转发请求比如现在本地可以链接某一台nginx服务器,域名为www.baidu.com,并且开放了端口8899,那么我们通过这台服务器,来转发我们链接不上的192.168.0.111:6379redis服务一、nginx.confdaemonoff;userwww;worker_processes8;worker_rlimit_nofile102400;events{useep.

    2022年10月10日
    0
  • mysql授予用户新建数据库的权限[通俗易懂]

    mysql授予用户新建数据库的权限

    2022年2月14日
    43
  • 中兴B760换中兴B860_中兴机顶盒B860没有无线网络

    中兴B760换中兴B860_中兴机顶盒B860没有无线网络开启adb方式:在主页长按5s以上返回,松开后接着按左键就会弹出adb打开界面,有的是会显示二维码,打开wifi:在设置界面连续按左键10次,就会叫你输入密码,一般是10086(当地联系移动的电话号码)。就可以了……

    2022年10月22日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号