GVKun编程网logo

将 id 替换为 MySQL 中 CROSS JOIN 中另一个表中的用户名(将tsale表中id字段的数据类型改为文本)

21

本篇文章给大家谈谈将id替换为MySQL中CROSSJOIN中另一个表中的用户名,以及将tsale表中id字段的数据类型改为文本的知识点,同时本文还将给你拓展(转载)Mysql----Join用法(I

本篇文章给大家谈谈将 id 替换为 MySQL 中 CROSS JOIN 中另一个表中的用户名,以及将tsale表中id字段的数据类型改为文本的知识点,同时本文还将给你拓展(转载) Mysql----Join用法(Inner join,Left join,Right join, Cross join, Union模拟Full join)及---性能优化、mysql 两个数据库中表的结构不同,如何把一个表中的数据导入到另一个表中、mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中、mysql 从一个表中查数据,插入另一个表等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

将 id 替换为 MySQL 中 CROSS JOIN 中另一个表中的用户名(将tsale表中id字段的数据类型改为文本)

将 id 替换为 MySQL 中 CROSS JOIN 中另一个表中的用户名(将tsale表中id字段的数据类型改为文本)

我想扩展以下查询:

SELECT     d.dataid,    d.colors,    u.userid,    u.usernameFROM    users u        CROSS JOIN    datas dWHERE    (u.userid , d.dataid) NOT IN (SELECT             c.userid, c.dataid        FROM            collections c)        AND u.userid = 1

对于这个数据样本:

table datas                 table users          table collectionsdataid | colors  | addedby  userid | username    collectionid | userid | dataid--------------------------  -------------------  ------------------------------   1   | blue    |    1       1    | Brian            1       |    1   |   1   2   | red     |    1       2    | Jason            2       |    2   |   3   3   | green   |    2       3    | Marie            3       |    1   |   3   4   | yellow  |    3                               4       |    3   |   2

这些结果是预期的:

for Brian           dataid | colors | userid | username-----------------------------------   2   | red    |   1    | Brian   4   | yellow |   1    | Mariefor Jasondataid | colors | userid | username-----------------------------------   1   | blue   |   2    | Brian   2   | red    |   2    | Brian   4   | yellow |   2    | Marie

添加了从用户继承用户 ID 的行“ addedby”。目前,我的查询用用户名替换了来自用户的用户 ID,而不是来自数据的 addedby。我真的需要替换数据中的用户 ID,而不是用户的用户 ID。:-)

有谁知道如何解决这个问题?

提前致谢!

答案1

只需使用数据表再次加入用户表。并在输出中使用此连接中的用户名。

SELECT     d.dataid,    d.colors,    uo.userid,    uo.usernameFROM    users u        CROSS JOIN    datas dINNER JOIN    users uoON d.added_by = uo.idWHERE    (u.userid , d.dataid) NOT IN (SELECT             c.userid, c.dataid        FROM            collections c)        AND u.userid = 1

而且我相信,你甚至可以这样写你的查询

SELECT u.userid, u.username, d.dataid, d.colorsFROM username uINNER JOIN datas d   ON u.userid = d.addedbyWHERE d.dataid NOT IN (   SELECT dataid    FROM collections   WHERE userid = 1)

(转载) Mysql----Join用法(Inner join,Left join,Right join, Cross join, Union模拟Full join)及---性能优化

(转载) Mysql----Join用法(Inner join,Left join,Right join, Cross join, Union模拟Full join)及---性能优化

http://blog.csdn.net/ochangwen/article/details/52346610

 

前期数据准备

CREATE TABLE  atable(
aID int( 1 ) AUTO_INCREMENT PRIMARY KEY ,
aNum char( 20 ));

CREATE TABLE btable(
bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
bName char( 20 ) );

INSERT INTO atable
VALUES ( 1, ''a20050111'' ) , ( 2, ''a20050112'' ) , ( 3, ''a20050113'' ) , ( 4, ''a20050114'' ) , ( 5, ''a20050115'' ) ;

INSERT INTO btable
VALUES ( 1, '' 2006032401'' ) , ( 2, ''2006032402'' ) , ( 3, ''2006032403'' ) , ( 4, ''2006032404'' ) , ( 8, ''2006032408'' ) ;

-------------------------------------------------------------------------------------------

atable:左表;btable:右表。
JOIN 按照功能大致分为如下三类:
  1).inner join(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。
  2).left  join(左连接):取得左表(atable)完全记录,即是右表(btable)并无对应匹配记录。
  3).right join(右连接):与 LEFT JOIN 相反,取得右表(btable)完全记录,即是左表(atable)并无匹配对应记录。
注意:mysql不支持Full join,不过可以通过 union 关键字来合并 left join 与 right join来模拟full join.

一、Inner join

  内连接,也叫等值连接,inner join产生同时符合A和B的一组数据。
  接下来给出一个列子用于解释下面几种分类。如下两个表(A,B)

 
  1. mysql> select * from atable  inner join btable  on atable.aid=btable.bid;  
  2. +-----+-----------+-----+-------------+  
  3. | aID | aNum      | bID | bName       |  
  4. +-----+-----------+-----+-------------+  
  5. |   1 | a20050111 |   1 |  2006032401 |  
  6. |   2 | a20050112 |   2 | 2006032402  |  
  7. |   3 | a20050113 |   3 | 2006032403  |  
  8. |   4 | a20050114 |   4 | 2006032404  |  
  9. +-----+-----------+-----+-------------+  

 

二、Left join

  left join,(或left outer join:在Mysql中两者等价,推荐使用left join.)左连接从左表(A)产生一套完整的记录,与匹配的记录(右表(B)) .如果没有匹配,右侧将包含null。

 

 
  1. mysql> select * from atable  left join btable  on atable.aid=btable.bid;  
  2. +-----+-----------+------+-------------+  
  3. | aID | aNum      | bID  | bName       |  
  4. +-----+-----------+------+-------------+  
  5. |   1 | a20050111 |    1 |  2006032401 |  
  6. |   2 | a20050112 |    2 | 2006032402  |  
  7. |   3 | a20050113 |    3 | 2006032403  |  
  8. |   4 | a20050114 |    4 | 2006032404  |  
  9. |   5 | a20050115 | NULL | NULL        |  
  10. +-----+-----------+------+-------------+  


------------------------------------------------------------------------------------------------------------

 

  2).如果想只从左表(A)中产生一套记录,但不包含右表(B)的记录,可以通过设置where语句来执行,如下

 

 
  1. mysql> select * from atable  left join btable  on atable.aid=btable.bid   
  2.     -> where atable.aid is  null or btable.bid is  null;  
  3. +-----+-----------+------+-------+  
  4. | aID | aNum      | bID  | bName |  
  5. +-----+-----------+------+-------+  
  6. |   5 | a20050115 | NULL | NULL  |  
  7. +-----+-----------+------+-------+  


-----------------------------------------------------------------------------------------

 

同理,还可以模拟inner join. 如下:


 

 
  1. mysql> select * from atable  left join btable  on atable.aid=btable.bid  where atable.aid is not null and btable.bid is not null;  
  2. +-----+-----------+------+-------------+  
  3. | aID | aNum      | bID  | bName       |  
  4. +-----+-----------+------+-------------+  
  5. |   1 | a20050111 |    1 |  2006032401 |  
  6. |   2 | a20050112 |    2 | 2006032402  |  
  7. |   3 | a20050113 |    3 | 2006032403  |  
  8. |   4 | a20050114 |    4 | 2006032404  |  
  9. +-----+-----------+------+-------------+  

------------------------------------------------------------------------------------------

 

三、Right join

  同Left join

 

  1. mysql> select * from atable  right join btable  on atable.aid=btable.bid;  
  2. +------+-----------+-----+-------------+  
  3. | aID  | aNum      | bID | bName       |  
  4. +------+-----------+-----+-------------+  
  5. |    1 | a20050111 |   1 |  2006032401 |  
  6. |    2 | a20050112 |   2 | 2006032402  |  
  7. |    3 | a20050113 |   3 | 2006032403  |  
  8. |    4 | a20050114 |   4 | 2006032404  |  
  9. NULL | NULL      |   8 | 2006032408  |  
  10. +------+-----------+-----+-------------+  

 

四、差集

 

 
  1. mysql> select * from atable  left join btable  on atable.aid=btable.bid    
  2.     -> where btable.bid is null  
  3.     -> union  
  4.     -> select * from atable right join btable on atable.aid=btable.bid  
  5.     -> where atable.aid is null;  
  6. +------+-----------+------+------------+  
  7. | aID  | aNum      | bID  | bName      |  
  8. +------+-----------+------+------------+  
  9. |    5 | a20050115 | NULL | NULL       |  
  10. NULL | NULL      |    8 | 2006032408 |  
  11. +------+-----------+------+------------+  


-----------------------------------------------------------------------------------

 

五.Cross join

  交叉连接,得到的结果是两个表的乘积,即笛卡尔积

    笛卡尔(Descartes)乘积又叫直积。假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1), (b,2)}。可以扩展到多个集合的情况。类似的例子有,如果A表示某学校学生的集合,B表示该学校所有课程的集合,则A与B的笛卡尔积表示所有可能的选课情况。

 

 
  1. mysql> select * from atable cross join btable;  
  2. +-----+-----------+-----+-------------+  
  3. | aID | aNum      | bID | bName       |  
  4. +-----+-----------+-----+-------------+  
  5. |   1 | a20050111 |   1 |  2006032401 |  
  6. |   2 | a20050112 |   1 |  2006032401 |  
  7. |   3 | a20050113 |   1 |  2006032401 |  
  8. |   4 | a20050114 |   1 |  2006032401 |  
  9. |   5 | a20050115 |   1 |  2006032401 |  
  10. |   1 | a20050111 |   2 | 2006032402  |  
  11. |   2 | a20050112 |   2 | 2006032402  |  
  12. |   3 | a20050113 |   2 | 2006032402  |  
  13. |   4 | a20050114 |   2 | 2006032402  |  
  14. |   5 | a20050115 |   2 | 2006032402  |  
  15. |   1 | a20050111 |   3 | 2006032403  |  
  16. |   2 | a20050112 |   3 | 2006032403  |  
  17. |   3 | a20050113 |   3 | 2006032403  |  
  18. |   4 | a20050114 |   3 | 2006032403  |  
  19. |   5 | a20050115 |   3 | 2006032403  |  
  20. |   1 | a20050111 |   4 | 2006032404  |  
  21. |   2 | a20050112 |   4 | 2006032404  |  
  22. |   3 | a20050113 |   4 | 2006032404  |  
  23. |   4 | a20050114 |   4 | 2006032404  |  
  24. |   5 | a20050115 |   4 | 2006032404  |  
  25. |   1 | a20050111 |   8 | 2006032408  |  
  26. |   2 | a20050112 |   8 | 2006032408  |  
  27. |   3 | a20050113 |   8 | 2006032408  |  
  28. |   4 | a20050114 |   8 | 2006032408  |  
  29. |   5 | a20050115 |   8 | 2006032408  |  
  30. +-----+-----------+-----+-------------+  
  31. 25 rows in set (0.00 sec)  
  32.   
  33.  <pre><code class="hljs cs"><span class="hljs-function">#再执行:mysql> <span class="hljs-keyword">select</span> * <span class="hljs-keyword">from</span> A inner <span class="hljs-keyword">join</span> B</span>; 试一试 (与上面的结果一样)  
  34.   
  35. <span class="hljs-meta">#在执行mysql> select * from A cross join B on A.name = B.name; 试一试</span></code>  

 

    实际上,在 MySQL 中(仅限于 MySQL) CROSS JOIN 与 INNER JOIN 的表现是一样的,在不指定 ON 条件得到的结果都是笛卡尔积,反之取得两个表完全匹配的结果。    inner join 与 cross join 可以省略 inner 或 cross关键字,因此下面的 SQL 效果是一样的:

 
  1. ... FROM table1 INNER JOIN table2  
  2. ... FROM table1 CROSS JOIN table2  
  3. ... FROM table1 JOIN table2  

 

六.union实现Full join

    全连接产生的所有记录(双方匹配记录)在表A和表B。如果没有匹配,则对面将包含null。与差集类似。

 

 
  1. mysql> select * from atable  left join btable  on atable.aid=btable.bid  
  2.     -> union  
  3.     -> select * from atable right join btable on atable.aid=btable.bid;  
  4. +------+-----------+------+-------------+  
  5. | aID  | aNum      | bID  | bName       |  
  6. +------+-----------+------+-------------+  
  7. |    1 | a20050111 |    1 |  2006032401 |  
  8. |    2 | a20050112 |    2 | 2006032402  |  
  9. |    3 | a20050113 |    3 | 2006032403  |  
  10. |    4 | a20050114 |    4 | 2006032404  |  
  11. |    5 | a20050115 | NULL | NULL        |  
  12. NULL | NULL      |    8 | 2006032408  |  
  13. +------+-----------+------+-------------+  


--------------------------------------------------------------------------------------------------------

 

七.性能优化

  1.显示(explicit) inner join VS 隐式(implicit) inner join

 

 
  1. select * from  
  2. table a inner join table b  
  3. on a.id = b.id;  

VS

 
  1. select a.*, b.*  
  2. from table a, table b  
  3. where a.id = b.id;  

    数据库中比较(10w数据)得之,它们用时几乎相同,第一个是显示的inner join,后一个是隐式的inner join。
2.left join/right join VS inner join
    尽量用inner join.避免 left join 和 null.

 

    在使用left join(或right join)时,应该清楚的知道以下几点:

(1). on与 where的执行顺序
    ON 条件(“A LEFT JOIN B ON 条件表达式”中的ON)用来决定如何从 B 表中检索数据行。如果 B 表中没有任何一行数据匹配 ON 的条件,将会额外生成一行所有列为 NULL 的数据,在匹配阶段 WHERE 子句的条件都不会被使用。仅在匹配阶段完成以后,WHERE 子句条件才会被使用。它将从匹配阶段产生的数据中检索过滤。
    所以我们要注意:在使用Left (right) join的时候,一定要在先给出尽可能多的匹配满足条件,减少Where的执行。如:

 
  1. select * from A  
  2. inner join B on B.name = A.name  
  3. left join C on C.name = B.name  
  4. left join D on D.id = C.id  
  5. where C.status>1 and D.status=1;  

下面这种写法更省时

[sql]  view plain  copy
 
  1. select * from A  
  2. inner join B on B.name = A.name  
  3. left join C on C.name = B.name and C.status>1  
  4. left join D on D.id = C.id and D.status=1  

(2).注意ON 子句和 WHERE 子句的不同

[sql]  view plain  copy
 
  1. mysql> SELECT * FROM product LEFT JOIN product_details  
  2.        ON (product.id = product_details.id)  
  3.        AND product_details.id=2;  
  4. +----+--------+------+--------+-------+  
  5. | id | amount | id   | weight | exist |  
  6. +----+--------+------+--------+-------+  
  7. |  1 |    100 | NULL |   NULL |  NULL |  
  8. |  2 |    200 |    2 |     22 |     0 |  
  9. |  3 |    300 | NULL |   NULL |  NULL |  
  10. |  4 |    400 | NULL |   NULL |  NULL |  
  11. +----+--------+------+--------+-------+  
  12. rows in set (0.00 sec)  
  13.    
  14. mysql> SELECT * FROM product LEFT JOIN product_details  
  15.        ON (product.id = product_details.id)  
  16.        WHERE product_details.id=2;  
  17. +----+--------+----+--------+-------+  
  18. | id | amount | id | weight | exist |  
  19. +----+--------+----+--------+-------+  
  20. |  2 |    200 |  2 |     22 |     0 |  
  21. +----+--------+----+--------+-------+  
  22. 1 row in set (0.01 sec)  

    从上可知,第一条查询使用 ON 条件决定了从 LEFT JOIN的 product_details表中检索符合的所有数据行。第二条查询做了简单的LEFT JOIN,然后使用 WHERE 子句从 LEFT JOIN的数据中过滤掉不符合条件的数据行。
(3).尽量避免子查询,而用join
    往往性能这玩意儿,更多时候体现在数据量比较大的时候,此时,我们应该避免复杂的子查询。如下:

 

 

 
  1. insert into t1(a1) select b1 from t2   
  2. where not exists(select 1 from t1 where t1.id = t2.r_id);  

下面这个更好

 
    1. insert into t1(a1)    
    2. select b1 from t2    
    3. left join (select distinct t1.id from t1 ) t1 on t1.id = t2.r_id     
    4. where t1.id is null;    

mysql 两个数据库中表的结构不同,如何把一个表中的数据导入到另一个表中

mysql 两个数据库中表的结构不同,如何把一个表中的数据导入到另一个表中

mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中
mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中


------解决方案--------------------
将表A中的查出来经过php处理将指定的字段用自定义的东西填充或者取出多出的字段然后放入到B表中
------解决方案--------------------
怎么个不同法?
给出两表结构,并说明需要将哪个表的哪些字段导入到另一个表的哪些字段中去

------解决方案--------------------
我去,这数据表,这么多个字段,你是把所有字段都放一个表了么?
------解决方案--------------------
你没有给出把哪个字段放到哪个字段中去
------解决方案--------------------
引用:
例如 jobinfo表中的companyaddr 放入job_hr表中的 m_address

你已经完成大半了
例如
insert into job_hr (m_address) values select companyaddr from jobinfo

------解决方案--------------------
本帖最后由 xuzuning 于 2011-08-26 06:50:08 编辑 insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo

当然不能一个一个添加,就是加了,也是不对

insert into 库1.job_hr (字段列表) values select 对应的字段列表 from 库2.jobinfo


------解决方案--------------------
根据主健,联表更新
------解决方案--------------------
引用:
insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo

当然不能一个一个添加,就是加了,也是不对

insert into 库1.job_hr (字段列表) values select 对应的字段列表 from 库2.jobinfo

 11# 真高手~ 那如果数据类型不一样 比如两个都是char呢 也能吗? 

mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中

mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中

mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中


回复讨论(解决方案)

表结构不一样 那就只能用php读取数据然后 insert 了.要不咋地?计算机能智能到跟你心灵相通嘛

将表A中的查出来经过php处理将指定的字段用自定义的东西填充或者取出多出的字段然后放入到B表中

怎么个不同法?
给出两表结构,并说明需要将哪个表的哪些字段导入到另一个表的哪些字段中去



这个是要导入表的结构
CREATE TABLE IF NOT EXISTS `job_hr` (
  `m_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `m_login` varchar(50) NOT NULL,
  `m_pwd` varchar(32) NOT NULL,
  `m_sendemail` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_question` varchar(50) NOT NULL,
  `m_answer` varchar(50) NOT NULL,
  `m_typeid` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_groupid` tinyint(2) NOT NULL DEFAULT ''0'',
  `m_email` varchar(100) NOT NULL,
  `m_email2` varchar(100) DEFAULT NULL COMMENT ''备用邮箱(S+)'',
  `m_emailshowflag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_name` varchar(200) NOT NULL,
  `m_sex` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_birth` date NOT NULL DEFAULT ''0000-00-00'',
  `m_cardtype` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_idcard` varchar(20) NOT NULL,
  `m_marriage` varchar(10) NOT NULL,
  `m_polity` varchar(10) NOT NULL,
  `m_hukou` varchar(100) NOT NULL,
  `m_seat` varchar(100) NOT NULL,
  `m_edu` tinyint(2) NOT NULL,
  `m_address` varchar(200) NOT NULL,
  `m_post` varchar(6) NOT NULL,
  `m_contact` varchar(50) NOT NULL,
  `m_chat` varchar(20) NOT NULL,
  `m_tel` varchar(100) NOT NULL,
  `m_telshowflag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_fax` varchar(50) NOT NULL,
  `m_url` varchar(100) NOT NULL,
  `m_regdate` int(11) NOT NULL,
  `m_logindate` int(11) NOT NULL,
  `m_loginip` varchar(15) NOT NULL DEFAULT ''000.000.000.000'',
  `m_loginnum` int(10) NOT NULL,
  `m_level` varchar(50) NOT NULL,
  `m_balance` int(10) NOT NULL DEFAULT ''0'',
  `m_integral` int(10) NOT NULL DEFAULT ''0'',
  `m_flag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_startdate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_enddate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_resumenums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_mysendnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_myinterviewnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_myfavoritenums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_letternums` tinyint(2) NOT NULL DEFAULT ''0'',
  `m_hirenums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_interviewnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_expertnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_comm` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_commstart` date NOT NULL DEFAULT ''0000-00-00'',
  `m_commend` date NOT NULL DEFAULT ''0000-00-00'',
  `m_logo` varchar(50) NOT NULL,
  `m_logostatus` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_logoflag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_logocomm` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_logostartdate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_logoenddate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_licence` varchar(100) NOT NULL,
  `m_trade` varchar(50) NOT NULL,
  `m_tradeid` smallint(5) NOT NULL,
  `m_ecoclass` varchar(20) NOT NULL,
  `m_fund` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_workers` varchar(10) NOT NULL,
  `m_founddate` date NOT NULL DEFAULT ''0000-00-00'',
  `m_introduce` mediumtext NOT NULL,
  `m_teachers` mediumtext NOT NULL,
  `m_achievement` mediumtext NOT NULL,
  `m_hits` int(10) NOT NULL DEFAULT ''0'',
  `m_template` varchar(20) NOT NULL,
  `m_activedate` datetime NOT NULL DEFAULT ''0000-00-00 00:00:00'',
  `m_mobile` varchar(20) NOT NULL,
  `m_mobileshowflag` tinyint(1) NOT NULL DEFAULT ''0'',
  `m_smsnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_hirenum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_myinterviewnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_expertnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_recyclenums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_recyclenum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_contactnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_contactnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_smsnums` mediumint(6) NOT NULL DEFAULT ''0'',
  `m_mysendnum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_myfavoritenum` smallint(4) NOT NULL DEFAULT ''0'',
  `m_ishire` smallint(4) NOT NULL DEFAULT ''0'',
  `m_operator` varchar(20) NOT NULL,
  `m_map` varchar(50) NOT NULL,
  `m_confirm` tinyint(1) NOT NULL DEFAULT ''0'',
  
  PRIMARY KEY (`m_id`),
  KEY `m_regdate` (`m_regdate`),
  KEY `m_enddate` (`m_enddate`),
  KEY `m_logindate` (`m_logindate`),
  KEY `m_login` (`m_login`),
  KEY `m_activedate` (`m_activedate`),
  KEY `m_startdate` (`m_startdate`),
  KEY `m_ishire` (`m_ishire`),
  KEY `m_logoflag` (`m_logoflag`),
  KEY `m_logostatus` (`m_logostatus`)
) ENGINE=MyISAM  DEFAULT 

CHARSET=gbk AUTO_INCREMENT=122851 ;


这个是有数据的表
 create  table jobinfo(
  id int(11)              
  jname varchar(50)                
  jdesc text                 
  jexp varchar(20)            
  knw varchar(20)               
  mgexp varchar(30)               
  jattr varchar(10)               
  num varchar(10)               
  paymt varchar(10)             
  conn text            
  waddr varchar(100)             
  pdate varchar(20)            
  jtype varchar(20)            
  cid varchar(10)             
  url varchar(50)              
  compname varchar(50)               
  companyaddr varchar(1000)              
  mailbox varchar(1000)             
  cmsg varchar(1000)            
  linkman varchar(20)               
)

我去,这数据表,这么多个字段,你是把所有字段都放一个表了么?

只把下面的表的数据插入第一张表里

你没有给出把哪个字段放到哪个字段中去

例如 jobinfo表中的companyaddr 放入job_hr表中的 m_address 

例如 jobinfo表中的companyaddr 放入job_hr表中的 m_address
你已经完成大半了
例如
insert into job_hr (m_address) values select companyaddr from jobinfo

它们在两个不的数据库啊  有没有代码啊 这样一个个的添加很麻烦的  谢谢啦

本帖最后由 xuzuning 于 2011-08-26 06:50:08 编辑

insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo

当然不能一个一个添加,就是加了,也是不对

insert into 库1.job_hr (字段列表) values select 对应的字段列表 from 库2.jobinfo

根据主健,联表更新

insert into job_hr (库1.m_address) values select companyaddr from 库2.jobinfo

当然不能一个一个添加,就是加了,也是不对

insert into 库1.job_hr (字段列表) values select 对应的字段列表 from 库2.jobinfo
 11# 真高手~ 那如果数据类型不一样 比如两个都是char呢 也能吗? 

我已经搞完了 谢谢各位高手帮忙

楼主,你是怎么搞定的?

怎么搞定的?现在急需,如果表中的数据很多,比如几百万条,怎么移

老老实实写程序导吧

mysql 从一个表中查数据,插入另一个表

mysql 从一个表中查数据,插入另一个表

 

正确:

INSERT into t_cities1(city_id,city,province_id) (SELECT city_id,city,province_id from((SELECT * from t_cities where id not in (SELECT id from t_cities1)) as citys))

错误

INSERT into t_cities1(city_id,city,province_id) VALUES((SELECT city_id,city,province_id from((SELECT * from t_cities where id not in (SELECT id from t_cities1)) as citys)))

我们今天的关于将 id 替换为 MySQL 中 CROSS JOIN 中另一个表中的用户名将tsale表中id字段的数据类型改为文本的分享就到这里,谢谢您的阅读,如果想了解更多关于(转载) Mysql----Join用法(Inner join,Left join,Right join, Cross join, Union模拟Full join)及---性能优化、mysql 两个数据库中表的结构不同,如何把一个表中的数据导入到另一个表中、mysql 两个数据库中表的结构不同,怎么把一个表中的数据导入到另一个表中、mysql 从一个表中查数据,插入另一个表的相关信息,可以在本站进行搜索。

本文标签: