当前位置: 首页 > news >正文

MySql中把一个表的数据插入到另一个表中的实现代码

小编今天在写一个 将一个数据库的表数据 导入到 另一个数据库的表的时候 我是这么写的

<?php
 header("Content-type:text/html;charset=utf-8");
$conn = mysql_connect("localhost","root","");
mysql_select_db('nnd',$conn);
mysql_select_db('ahjk',$conn);
mysql_query("set names utf8");
$sql = mysql_query("select content,partid from phpcms_c_disease order by contentid desc limit
//我这里是查询出表的数据 然后循环插入 
$sql1= "INSERT INTO `nnd`.`demo`(content,parid)  VALUES";
while($row = mysql_fetch_assoc($sql)){
     $sql1.="('$row[content]','$row[partid]'),";
}
$sql1.=")";
$sql2 .= str_replace(",)",";",$sql1);
mysql_query($sql2);
?>

没想到我会这么二 写出这么垃圾的代码。。

 下面给大家说下比较好的方法
      web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码。下面我以mysql数据库为例分情况一一说明:

1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法:
INSERT INTO 目标表 SELECT * FROM 来源表;
    insert into insertTest select * from insertTest2;

2.如果只希望导入指定字段,可以用这种方法:

INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM 来源表;(这里的话字段必须保持一致)
   insert into insertTest2(id) select id from insertTest2;

3.如果您需要只导入目标表中不存在的记录,可以使用这种方法:

INSERT INTO 目标表  
 (字段1, 字段2, ...)  
 SELECT 字段1, 字段2, ...  
 FROM 来源表  
 WHERE not exists (select * from 目标表  
 where 目标表.比较字段 = 来源表.比较字段); 

 1>.插入多条记录:

insert into insertTest2
(id,name)
select id,name
from insertTest
where not exists (select * from insertTest2
where insertTest2.id=insertTest.id);

 2>.插入一条记录:

insert into insertTest    
(id, name)    
SELECT 100, 'liudehua'    
FROM dual    
WHERE not exists (select * from insertTest    
where insertTest.id = 100);

 

Mysql清空表(truncate)与删除表中数据(delete)的区别

 

为某基于wordpress搭建的博客长久未除草,某天升级的时候发现已经被插入了几万条垃圾留言,如果一条条删除那可真是累人的活。遂考虑直接进入mysql直接清空表或者删除表中数据。

本文记录一下这2种操作模式的区别,目标对象是表wp_comments,里面的所有留言均是垃圾留言,均可删除。然后便有了以下2种方式(进入mysql操作界面后):

  1. truncate table wp_comments;
  2. delete * from wp_comments;

其中truncate操作中的table可以省略,delete操作中的*可以省略。这两者都是将wp_comments表中数据清空,不过也是有区别的,如下:

  • truncate是整体删除(速度较快), delete是逐条删除(速度较慢)。
  • truncate不写服务器log,delete写服务器log,也就是truncate效率比delete高的原因。
  • truncate不激活trigger(触发器),但是会重置Identity(标识列、自增字段),相当于自增列会被置为初始值,又重新从1开始记录,而不是接着原来的ID数。而delete删除以后,Identity依旧是接着被删除的最近的那一条记录ID加1后进行记录。
  • 如果只需删除表中的部分记录,只能使用DELETE语句配合where条件。 DELETE FROM wp_comments WHERE……

全文完。

相关文章:

  • 图片定位问题
  • xencenter如何安装系统
  • ASP.NET MVC Model元数据及其定制: Model元数据的定制
  • 04-String
  • 社工-入侵
  • Spring声明式事务管理之一:五大属性分析
  • 解决Activity启动黑屏及设置android:windowIsTranslucent不兼容activity切换动画问题
  • UWP Popup 弹出提示框
  • 利用Dawn工程化工具实践MobX数据流管理方案
  • crontab_定时执行任务(python)
  • 【commons-io】File对文件与目录的处理FileUtis,IOUtils,FilenameUtils工具的使用
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • vue2组件之间双向数据绑定问题
  • IO(字节流、字符流)
  • Linux环境安装docker
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Asm.js的简单介绍
  • Druid 在有赞的实践
  • idea + plantuml 画流程图
  • java取消线程实例
  • Js基础——数据类型之Null和Undefined
  • Just for fun——迅速写完快速排序
  • JWT究竟是什么呢?
  • sessionStorage和localStorage
  • SQLServer插入数据
  • Terraform入门 - 1. 安装Terraform
  • 动态规划入门(以爬楼梯为例)
  • 对超线程几个不同角度的解释
  • 工作中总结前端开发流程--vue项目
  • 关于for循环的简单归纳
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 你不可错过的前端面试题(一)
  • 使用docker-compose进行多节点部署
  • 我的面试准备过程--容器(更新中)
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • postgresql行列转换函数
  • 阿里云移动端播放器高级功能介绍
  • 回归生活:清理微信公众号
  • ​2021半年盘点,不想你错过的重磅新书
  • ​MySQL主从复制一致性检测
  • #ifdef 的技巧用法
  • $ git push -u origin master 推送到远程库出错
  • $$$$GB2312-80区位编码表$$$$
  • (C语言)fread与fwrite详解
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (二)windows配置JDK环境
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (学习日记)2024.01.09
  • (转)创业的注意事项
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • . Flume面试题
  • .Net Core缓存组件(MemoryCache)源码解析