新聞中心
今天在一個(gè)庫(kù)里面相互到兩張表的數(shù)據(jù),我之前只會(huì)一種方法:

創(chuàng)新互聯(lián)專注于象山企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,成都商城網(wǎng)站開發(fā)。象山網(wǎng)站建設(shè)公司,為象山等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
- INSERT INTO A SELECT * FROM B;
這個(gè)方法的意思是將b表的所有數(shù)據(jù)全部導(dǎo)入到a表中,注意:
a、b表的數(shù)據(jù)結(jié)構(gòu)相同;
相當(dāng)于復(fù)制了b表數(shù)據(jù)到a表
這樣可以簡(jiǎn)單完成功能,但是當(dāng)需求變成這樣:
a、b表數(shù)據(jù)結(jié)構(gòu)不一樣;
或者只需導(dǎo)一部分?jǐn)?shù)據(jù)
或者導(dǎo)入數(shù)據(jù)是有重復(fù)的
這個(gè)sql就無(wú)能為力了,我們以各種情況來(lái)說(shuō)。
首先有a表,結(jié)構(gòu)如下:
- CREATE TABLE `table_a` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵,長(zhǎng)整型,自增',
- `user_id` varchar(32) DEFAULT NULL COMMENT '用戶id',
- `name` varchar(50) DEFAULT NULL COMMENT '名字',
- `email` varchar(30) NOT NULL COMMENT '郵箱',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
然后是b表,結(jié)構(gòu)如下,
- CREATE TABLE `table_b` (
- `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵,長(zhǎng)整型,自增',
- `user_id` varchar(32) DEFAULT NULL COMMENT '用戶id',
- `user_name` varchar(50) DEFAULT NULL COMMENT '名字',
- `email` varchar(30) NOT NULL COMMENT '郵箱',
- `course` varchar(30) NOT NULL COMMENT '課程',
- PRIMARY KEY (`id`)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
情形如下:
(1)導(dǎo)入的數(shù)據(jù)在a表中完全不存在
- INSERT INTO table_a (id,user_id,name,email) SELECT id,user_id,user_name,email FROM table_b;
或者不需要id的情況,
- INSERT INTO table_a (user_id,name,email) SELECT user_id,user_name,email FROM table_b;
如果有重復(fù)的可以使用replace into 這個(gè),但是請(qǐng)慎重使用replace,保證你對(duì)replace有足夠的了解!
(2)導(dǎo)入的數(shù)據(jù)部分存在
數(shù)據(jù)部分存在為了區(qū)分需要在兩個(gè)表添加唯一索引
兩個(gè)表中分別為user_name和name字段添加唯一索引
第一種情形,
使用replace into的方式進(jìn)行導(dǎo)入數(shù)據(jù)(這里根據(jù)唯一索引進(jìn)行判斷,如果不添加唯一索引的方式,除了id主鍵不同外,其他均相同的情況下也視為相同)
第二種情形,
忽略重復(fù)的,即如果有發(fā)現(xiàn)重復(fù)的行,則跳過(guò)此行數(shù)據(jù)的插入,必須使用ignore關(guān)鍵字,
- INSERT IGNORE INTO table_a (id,user_id,name,email) SELECT id,user_id,user_name,email FROM table_b;
分享名稱:mysql不同數(shù)據(jù)庫(kù)不同數(shù)據(jù)表導(dǎo)入數(shù)據(jù)
分享網(wǎng)址:http://m.fisionsoft.com.cn/article/dhioecd.html


咨詢
建站咨詢
