MYSQL INSERT ... SELECT

  INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]

  [INTO] tbl_name [(col_name,...)]

  SELECT ...

  [ ON DUPLICATE KEY UPDATE col_name=expr, ... ]

  使用INSERT...SELECT,您可以快速地从一个或多个表中向一个表中插入多个行。

  示例:

  INSERT INTO tbl_temp2 (fld_id)

  SELECT tbl_temp1.fld_order_id

  FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

  使用INSERT...SELECT语句时会出现以下情况:

  ·明确地指定IGNORE,用于忽略会导致重复关键字错误的记录。

  ·不要同时使用DELAYED和INSERT...SELECT。

  ·INSERT语句的目标表会显示在查询的SELECT部分的FROM子句中。(在有些旧版本的MySQL中不会出现这种情况。)

  ·AUTO_INCREMENT列照常运行。

  ·为了确保二进制日志可以被用于再次创建原表,MySQL不允许在INSERT...SELECT运行期间同时进行插入操作。

  ·目前,您不能在向一个表插入的同时,又在一个子查询中从同一个表中选择。

  在ON DUPLICATE KEY UPDATE的值部分中,只要您不使用SELECT部分中的GROUP BY,您就可以引用在其它表中的列。有一个副作用是,您必须使值部分中的非唯一列的名称符合要求。

  您可以使用REPLACE替代INSERT,来覆盖旧行。对于包含唯一关键字值,并复制了旧行的新行,在进行处理时,REPLACE可以作为INSERT IGNORE的同类子句:新行被用于替换旧行,而不是被丢弃。

来源网址:http://book.china701.com/629/10113Q615674.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值