当前位置:首页 > 系统运维 > 正文内容

MySQL连接用法示例(1)

a8116255316年前 (2010-05-27)系统运维12

以下的文章主要介绍的是MySQL连接用法总结,以及MySQL连接的概念,各种连接的具体使用方案,数据库增量同步实例的介绍,如果你对这些相关的内容心存好奇的话,你就可以对以下的文章进行阅读了。

1、MySQL连接简介

MySQL支持的连接类型如下:

交叉连接、内连接、外连接(左外MySQL连接和右外连接)、自连接、联合

2、各种连接的使用 ***

在演示各种MySQL连接的用法之前,我们先定义如下的数据库表格,以后的演示就使用它们。

mysql> select * from t_users;  +---------+-----------+---------+---------------------+  | iUserID | sUserName | istatus | dtlastTime |  +---------+-----------+---------+---------------------+  | 1 | bAIdu | 0 | 2010-06-27 15:04:03 |  | 2 | google | 0 | 2010-06-27 15:04:03 |  | 3 | yahoo | 0 | 2010-06-27 15:04:03 |  | 4 | tencent | 0 | 2010-06-27 15:04:03 |  +---------+-----------+---------+---------------------+mysql> select * from t_groups;  +----------+------------+---------------------+  | iGroupID | sGroupName | dtLastTime |  +----------+------------+---------------------+  | 1 | spring | 2010-06-27 15:04:03 |  | 2 | summer | 2010-06-27 15:04:03 |  | 3 | autumn | 2010-06-27 15:04:03 |  | 4 | winter | 2010-06-27 15:04:03 |  +----------+------------+---------------------+mysql> select * from t_users_groups;  +---------+----------+---------------------+  | iUserID | iGroupID | dtLastTime |  +---------+----------+---------------------+  | 1 | 1 | 2010-06-27 15:04:03 |  | 2 | 1 | 2010-06-27 15:04:03 |  | 4 | 3 | 2010-06-27 15:04:03 |  | 6 | 4 | 2010-06-27 15:04:03 |  +---------+----------+---------------------+1.交叉连接  

2.内连接

3.外连接

外连接有什么特点?简而言之,外连接作用在通过某个key相连接的两张表上,它首先从A表中依次读出每行数据,然后到与之相连接的B表,寻找具有相同key值的记录。如果有匹配行,A和B的对应记录组成新结果行;如果没有,A与一条各字段为NULL的B记录组成新结果行。

到底从哪个表中选择所有行,SQL标准定义了左外连接和右外连接。

左外连接:

mysql> SELECT * FROM t_users LEFT JOIN t_users_groups ON t_users.iUserID=t_users_groups.iUserID;  +---------+-----------+---------+---------------------+---------+----------+---------------------+  | iUserID | sUserName | iStatus | dtLastTime | iUserID | iGroupID | dtLastTime |  +---------+-----------+---------+---------------------+---------+----------+---------------------+  | 1 | baidu | 0 | 2010-06-27 15:04:03 | 1 | 1 | 2010-06-27 15:04:03 |  | 2 | google | 1 | 2010-06-27 15:46:51 | 2 | 1 | 2010-06-27 15:04:03 |  | 3 | yahoo | 1 | 2010-06-27 15:46:51 | NULL | NULL | NULL |  | 4 | tencent | 0 | 2010-06-27 15:04:03 | 4 | 3 | 2010-06-27 15:04:03 |  +---------+-----------+---------+---------------------+---------+----------+---------------------+  4 rows in set (0.00 sec) 

t_users为上述描述中的A表,t_users_groups为B表。

右外连接:

mysql> SELECT * FROM t_users RIGHT JOIN t_users_groups ON t_users.iUserID=t_users_groups.iUserID;  +---------+-----------+---------+---------------------+---------+----------+---------------------+  | iUserID | sUserName | iStatus | dtLastTime | iUserID | iGroupID | dtLastTime |  +---------+-----------+---------+---------------------+---------+----------+---------------------+  | 1 | baidu | 0 | 2010-06-27 15:04:03 | 1 | 1 | 2010-06-27 15:04:03 |  | 2 | google | 1 | 2010-06-27 15:46:51 | 2 | 1 | 2010-06-27 15:04:03 |  | 4 | tencent | 0 | 2010-06-27 15:04:03 | 4 | 3 | 2010-06-27 15:04:03 |  | NULL | NULL | NULL | NULL | 6 | 4 | 2010-06-27 15:04:03 |  +---------+-----------+---------+---------------------+---------+----------+---------------------+  4 rows in set (0.00 sec) 

t_users_groups为上述描述中的A表,t_users为B表。

4.自MySQL连接

5.联合

UNION运算符表示联合,它用来把多个SELECT查询的结果连接成一个单独的结果集,但在MySQL连接时去除重复行。可以使用UNION连接尽可能多的SELECT查询,但要谨记两个基本条件。首先,每个SELECT查询返回的字段个数必须相同。第二,每个SELECT查询的字段类型必须依次相同。

我们举个联合例子:

mysql> SELECT iUserID,sUserName,dtLastTime FROM t_users   -> UNION   -> SELECT iGroupID,sGroupName,dtLastTime FROM t_groups;  +---------+-----------+---------------------+  | iUserID | sUserName | dtLastTime |  +---------+-----------+---------------------+  | 1 | baidu | 2010-06-27 15:04:03 |  | 2 | google | 2010-06-27 15:46:51 |  | 3 | yahoo | 2010-06-27 15:46:51 |  | 4 | tencent | 2010-06-27 15:04:03 |  | 1 | spring | 2010-06-27 15:04:03 |  | 2 | summer | 2010-06-27 15:04:03 |  | 3 | autumn | 2010-06-27 15:04:03 |  | 4 | winter | 2010-06-27 15:04:03 |  +---------+-----------+---------------------+ 

8 rows in set (0.01 sec)

对UNION的每个SELECT添加ORDER BY子句是没有意义的,如果要排序则必须将其施加到最后的结果集上。比如大家要对上面的例子中的iUserID进行排序,应该使用如下的SQL语句:

mysql> (SELECT iUserID,sUserName,dtLastTime FROM t_users)   -> UNION   -> (SELECT iGroupID,sGroupName,dtLastTime FROM t_groups)  -> ORDER BY iUserID ASC;  +---------+-----------+---------------------+  | iUserID | sUserName | dtLastTime |  +---------+-----------+---------------------+  | 1 | baidu | 2010-06-27 15:04:03 |  | 1 | spring | 2010-06-27 15:04:03 |  | 2 | google | 2010-06-27 15:46:51 |  | 2 | summer | 2010-06-27 15:04:03 |  | 3 | yahoo | 2010-06-27 15:46:51 |  | 3 | autumn | 2010-06-27 15:04:03 |  | 4 | tencent | 2010-06-27 15:04:03 |  | 4 | winter | 2010-06-27 15:04:03 |  +---------+-----------+---------------------+  8 rows in set (0.02 sec) 

上面说了这么多内容,是关于对MySQL连接与各种连接的使用 *** 的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注ITjs,学习最新Mysql技术。

3、数据库增量同步例子

假设我们还有一个db_src.t_users,它与db_tar.t_users结构完全相同。现网的应用策略,要求先操作db_src.t_users,确认无误后再同步到db_tar.t_users。所以两边数据只会存在三种情况,后面我们将分别介绍如何使用SQL连接在数据库间增量同步数据。

mysql> select * from t_users;  +---------+-----------+---------+---------------------+  | iUserID | sUserName | iStatus | dtLastTime |  +---------+-----------+---------+---------------------+  | 1 | baidu | 0 | 2010-06-27 15:04:03 |  | 2 | google | 1 | 2010-06-27 15:46:51 |  | 3 | yahoo | 1 | 2010-06-27 15:46:51 |  | 4 | tencent | 0 | 2010-06-27 15:04:03 |  | 5 | netease | 0 | 2010-06-27 15:04:03 |  +---------+-----------+---------+---------------------+  5 rows in set (0.01 sec) 

情况1:db_src.t_users存在某条记录,db_tar.t_users中不存在。策略->将前者中的记录插入到后者中。

解决该问题的SQL语句为:

INSERT INTO db_tar.t_users select db_src.t_users.*   FROM db_src.t_users LEFT JOIN db_tar.t_users ON db_src.t_users.iUserID=db_tar.t_users.iUserID   WHERE db_tar.t_users.iUserID IS NULL;  

同步原理其实很简单,核心SQL语句就是SELECT db_src.t_users.iUserID, db_src.t_users.sUserName, db_tar.t_users.* FROM db_src.t_users LEFT JOIN db_tar.t_users ON

db_src.t_users.iUserID=db_tar.t_users.iUserID WHERE db_tar.t_users.iUserID IS NULL。如果不使用where条件检索数据,执行SQL得到结果如下:   mysql> SELECT db_src.t_users.iUserID, db_src.t_users.sUserName, db_tar.t_users.*   -> FROM db_src.t_users   -> LEFT JOIN db_tar.t_users ON db_src.t_users.iUserID=db_tar.t_users.iUserID;  +---------+-----------+---------+-----------+---------+---------------------+  | iUserID | sUserName | iUserID | sUserName | iStatus | dtLastTime |  +---------+-----------+---------+-----------+---------+---------------------+  | 1 | baidu | 1 | baidu | 0 | 2010-06-27 15:04:03 |  | 2 | google | 2 | google | 1 | 2010-06-27 15:46:51 |  | 3 | yahoo | 3 | yahoo | 1 | 2010-06-27 15:46:51 |  | 4 | tencent | 4 | tencent | 0 | 2010-06-27 15:04:03 |  | 5 | netease | NULL | NULL | NULL | NULL |  +---------+-----------+---------+-----------+---------+---------------------+ 

5 rows in set (0.00 sec)加入where语句后,我们就能得到"iUserID=5"这条记录不在目标数据表中,使用insert语句可以将其插入到目标数据库中,从而完成同步操作。

情况2:db_src.t_users存在某条记录,db_tar.t_users中也存在。策略->如果两者数据不同,则修改后者的记录。

这里有个问题,就是如何判断这两条记录是否不同。我们可以采用逐个字段比较的 *** ,但字段较多的时候就不好使用了。简单点的 *** 是规定修改db_src.t_users时,必须同时将db_src.t_users.dtLastTime修改为当前时间,以后就可以通过比较dtLastTime来判断数据是否不同。

根据上述判断 *** ,解决该问题的SQL语句为:

select CONCAT('UPDATE db_src.t_users SET ',   'iUserID='', db_src.t_users.iUserID, '',',   'sUserName='', db_src.t_users.sUserName, '',',   'iStatus='', db_src.t_users.iStatus, '',',   'dtLastTime='', db_src.t_users.dtLastTime, '' ',   'WHERE db_tar.t_users.iUserID='', db_src.t_users.iUserID, '';')   from db_src.t_users left join db_tar.t_users on db_src.t_users.iUserID = db_tar.t_users.iUserID  where db_tar.t_users.iUserID is not null and   db_src.t_users.dtLastTime > db_tar.t_users.dtLastTime; 

直接执行上述语句得到只是一组UPDATE的SQL,并不能直接修改db_tar.t_users,我们可以在shell命令行上执行下面的这个命令完成同步功能:

mysql -Nse select CONCAT('UPDATE db_src.t_users SET ',   'iUserID='', db_src.t_users.iUserID, '',',   'sUserName='', db_src.t_users.sUserName, '',',   'iStatus='', db_src.t_users.iStatus, '',',   'dtLastTime='', db_src.t_users.dtLastTime, '' ',   'WHERE db_tar.t_users.iUserID='', db_src.t_users.iUserID, '';')   from db_src.t_users left join db_tar.t_users on db_src.t_users.iUserID = db_tar.t_users.iUserID  where db_tar.t_users.iUserID is not null and   db_src.t_users.dtLastTime > db_tar.t_users.dtLastTime; | mysql;  

情况3:db_src.t_users不存在某条记录,但在db_tar.t_users中存在。策略->将该记录从后者中删除。

解决该问题的SQL语句为:

SELECT CONCAT('DELETE FROM db_tar.t_users WHERE db_tar.t_users.iUserID=',   db_tar.t_users.iUserID, ';')   FROM db_tar.t_users LEFT JOIN db_src.t_users ON db_src.t_users.iUserID=db_tar.t_users.iUserID   WHERE db_src.t_users.iUserID IS NULL; 

该SQL语句的情况和第二种情况相似,也不能直接执行。所以需要采用同样的方式使用SQL语句才能完成工作。可能已经有人看出了,还有更为简单的 *** 可以处理这种情况。对,确实存在!当然可以使用下面更为简洁的SQL语句:

DELETE FROM db_tar.t_users   WHERE db_tar.t_users.UserID NOT IN (SELECT db_src.t_users.iUserID FROM db_src.t_users); 

上面说了这么多内容,是关于对MySQL连接用法总结的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注IT *** ,学习最新Mysql技术。

以下的文章主要介绍的是MySQL连接用法总结,以及MySQL连接的概念,各种连接的具体使用方案,数据库增量同步实例的介绍,如果你对这些相关的内容心存好奇的话,你就可以对以下的文章进行阅读了。

1、MySQL连接简介

MySQL支持的连接类型如下:

交叉连接、内连接、外连接(左外MySQL连接和右外连接)、自连接、联合

2、各种连接的使用 ***

在演示各种MySQL连接的用法之前,我们先定义如下的数据库表格,以后的演示就使用它们。

mysql> select * from t_users;  +---------+-----------+---------+---------------------+  | iUserID | sUserName | iStatus | dtLastTime |  +---------+-----------+---------+---------------------+  | 1 | baidu | 0 | 2010-06-27 15:04:03 |  | 2 | google | 0 | 2010-06-27 15:04:03 |  | 3 | yahoo | 0 | 2010-06-27 15:04:03 |  | 4 | tencent | 0 | 2010-06-27 15:04:03 |  +---------+-----------+---------+---------------------+mysql> select * from t_groups;  +----------+------------+---------------------+  | iGroupID | sGroupName | dtLastTime |  +----------+------------+---------------------+  | 1 | spring | 2010-06-27 15:04:03 |  | 2 | summer | 2010-06-27 15:04:03 |  | 3 | autumn | 2010-06-27 15:04:03 |  | 4 | winter | 2010-06-27 15:04:03 |  +----------+------------+---------------------+mysql> select * from t_users_groups;  +---------+----------+---------------------+  | iUserID | iGroupID | dtLastTime |  +---------+----------+---------------------+  | 1 | 1 | 2010-06-27 15:04:03 |  | 2 | 1 | 2010-06-27 15:04:03 |  | 4 | 3 | 2010-06-27 15:04:03 |  | 6 | 4 | 2010-06-27 15:04:03 |  +---------+----------+---------------------+1.交叉连接  

2.内连接

3.外连接

外连接有什么特点?简而言之,外连接作用在通过某个key相连接的两张表上,它首先从A表中依次读出每行数据,然后到与之相连接的B表,寻找具有相同key值的记录。如果有匹配行,A和B的对应记录组成新结果行;如果没有,A与一条各字段为NULL的B记录组成新结果行。

到底从哪个表中选择所有行,SQL标准定义了左外连接和右外连接。

左外连接:

mysql> SELECT * FROM t_users LEFT JOIN t_users_groups ON t_users.iUserID=t_users_groups.iUserID;  +---------+-----------+---------+---------------------+---------+----------+---------------------+  | iUserID | sUserName | iStatus | dtLastTime | iUserID | iGroupID | dtLastTime |  +---------+-----------+---------+---------------------+---------+----------+---------------------+  | 1 | baidu | 0 | 2010-06-27 15:04:03 | 1 | 1 | 2010-06-27 15:04:03 |  | 2 | google | 1 | 2010-06-27 15:46:51 | 2 | 1 | 2010-06-27 15:04:03 |  | 3 | yahoo | 1 | 2010-06-27 15:46:51 | NULL | NULL | NULL |  | 4 | tencent | 0 | 2010-06-27 15:04:03 | 4 | 3 | 2010-06-27 15:04:03 |  +---------+-----------+---------+---------------------+---------+----------+---------------------+  4 rows in set (0.00 sec) 

t_users为上述描述中的A表,t_users_groups为B表。

右外连接:

mysql> SELECT * FROM t_users RIGHT JOIN t_users_groups ON t_users.iUserID=t_users_groups.iUserID;  +---------+-----------+---------+---------------------+---------+----------+---------------------+  | iUserID | sUserName | iStatus | dtLastTime | iUserID | iGroupID | dtLastTime |  +---------+-----------+---------+---------------------+---------+----------+---------------------+  | 1 | baidu | 0 | 2010-06-27 15:04:03 | 1 | 1 | 2010-06-27 15:04:03 |  | 2 | google | 1 | 2010-06-27 15:46:51 | 2 | 1 | 2010-06-27 15:04:03 |  | 4 | tencent | 0 | 2010-06-27 15:04:03 | 4 | 3 | 2010-06-27 15:04:03 |  | NULL | NULL | NULL | NULL | 6 | 4 | 2010-06-27 15:04:03 |  +---------+-----------+---------+---------------------+---------+----------+---------------------+  4 rows in set (0.00 sec) 

t_users_groups为上述描述中的A表,t_users为B表。

4.自MySQL连接

5.联合

UNION运算符表示联合,它用来把多个SELECT查询的结果连接成一个单独的结果集,但在MySQL连接时去除重复行。可以使用UNION连接尽可能多的SELECT查询,但要谨记两个基本条件。首先,每个SELECT查询返回的字段个数必须相同。第二,每个SELECT查询的字段类型必须依次相同。

我们举个联合例子:

mysql> SELECT iUserID,sUserName,dtLastTime FROM t_users   -> UNION   -> SELECT iGroupID,sGroupName,dtLastTime FROM t_groups;  +---------+-----------+---------------------+  | iUserID | sUserName | dtLastTime |  +---------+-----------+---------------------+  | 1 | baidu | 2010-06-27 15:04:03 |  | 2 | google | 2010-06-27 15:46:51 |  | 3 | yahoo | 2010-06-27 15:46:51 |  | 4 | tencent | 2010-06-27 15:04:03 |  | 1 | spring | 2010-06-27 15:04:03 |  | 2 | summer | 2010-06-27 15:04:03 |  | 3 | autumn | 2010-06-27 15:04:03 |  | 4 | winter | 2010-06-27 15:04:03 |  +---------+-----------+---------------------+ 

8 rows in set (0.01 sec)

对UNION的每个SELECT添加ORDER BY子句是没有意义的,如果要排序则必须将其施加到最后的结果集上。比如大家要对上面的例子中的iUserID进行排序,应该使用如下的SQL语句:

mysql> (SELECT iUserID,sUserName,dtLastTime FROM t_users)   -> UNION   -> (SELECT iGroupID,sGroupName,dtLastTime FROM t_groups)  -> ORDER BY iUserID ASC;  +---------+-----------+---------------------+  | iUserID | sUserName | dtLastTime |  +---------+-----------+---------------------+  | 1 | baidu | 2010-06-27 15:04:03 |  | 1 | spring | 2010-06-27 15:04:03 |  | 2 | google | 2010-06-27 15:46:51 |  | 2 | summer | 2010-06-27 15:04:03 |  | 3 | yahoo | 2010-06-27 15:46:51 |  | 3 | autumn | 2010-06-27 15:04:03 |  | 4 | tencent | 2010-06-27 15:04:03 |  | 4 | winter | 2010-06-27 15:04:03 |  +---------+-----------+---------------------+  8 rows in set (0.02 sec) 

上面说了这么多内容,是关于对MySQL连接与各种连接的使用 *** 的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注IT *** ,学习最新Mysql技术。

3、数据库增量同步例子

假设我们还有一个db_src.t_users,它与db_tar.t_users结构完全相同。现网的应用策略,要求先操作db_src.t_users,确认无误后再同步到db_tar.t_users。所以两边数据只会存在三种情况,后面我们将分别介绍如何使用SQL连接在数据库间增量同步数据。

mysql> select * from t_users;  +---------+-----------+---------+---------------------+  | iUserID | sUserName | iStatus | dtLastTime |  +---------+-----------+---------+---------------------+  | 1 | baidu | 0 | 2010-06-27 15:04:03 |  | 2 | google | 1 | 2010-06-27 15:46:51 |  | 3 | yahoo | 1 | 2010-06-27 15:46:51 |  | 4 | tencent | 0 | 2010-06-27 15:04:03 |  | 5 | netease | 0 | 2010-06-27 15:04:03 |  +---------+-----------+---------+---------------------+  5 rows in set (0.01 sec) 

情况1:db_src.t_users存在某条记录,db_tar.t_users中不存在。策略->将前者中的记录插入到后者中。

解决该问题的SQL语句为:

INSERT INTO db_tar.t_users select db_src.t_users.*   FROM db_src.t_users LEFT JOIN db_tar.t_users ON db_src.t_users.iUserID=db_tar.t_users.iUserID   WHERE db_tar.t_users.iUserID IS NULL;  

同步原理其实很简单,核心SQL语句就是SELECT db_src.t_users.iUserID, db_src.t_users.sUserName, db_tar.t_users.* FROM db_src.t_users LEFT JOIN db_tar.t_users ON

db_src.t_users.iUserID=db_tar.t_users.iUserID WHERE db_tar.t_users.iUserID IS NULL。如果不使用where条件检索数据,执行SQL得到结果如下:   mysql> SELECT db_src.t_users.iUserID, db_src.t_users.sUserName, db_tar.t_users.*   -> FROM db_src.t_users   -> LEFT JOIN db_tar.t_users ON db_src.t_users.iUserID=db_tar.t_users.iUserID;  +---------+-----------+---------+-----------+---------+---------------------+  | iUserID | sUserName | iUserID | sUserName | iStatus | dtLastTime |  +---------+-----------+---------+-----------+---------+---------------------+  | 1 | baidu | 1 | baidu | 0 | 2010-06-27 15:04:03 |  | 2 | google | 2 | google | 1 | 2010-06-27 15:46:51 |  | 3 | yahoo | 3 | yahoo | 1 | 2010-06-27 15:46:51 |  | 4 | tencent | 4 | tencent | 0 | 2010-06-27 15:04:03 |  | 5 | netease | NULL | NULL | NULL | NULL |  +---------+-----------+---------+-----------+---------+---------------------+ 

5 rows in set (0.00 sec)加入where语句后,我们就能得到"iUserID=5"这条记录不在目标数据表中,使用insert语句可以将其插入到目标数据库中,从而完成同步操作。

情况2:db_src.t_users存在某条记录,db_tar.t_users中也存在。策略->如果两者数据不同,则修改后者的记录。

这里有个问题,就是如何判断这两条记录是否不同。我们可以采用逐个字段比较的 *** ,但字段较多的时候就不好使用了。简单点的 *** 是规定修改db_src.t_users时,必须同时将db_src.t_users.dtLastTime修改为当前时间,以后就可以通过比较dtLastTime来判断数据是否不同。

根据上述判断 *** ,解决该问题的SQL语句为:

select CONCAT('UPDATE db_src.t_users SET ',   'iUserID='', db_src.t_users.iUserID, '',',   'sUserName='', db_src.t_users.sUserName, '',',   'iStatus='', db_src.t_users.iStatus, '',',   'dtLastTime='', db_src.t_users.dtLastTime, '' ',   'WHERE db_tar.t_users.iUserID='', db_src.t_users.iUserID, '';')   from db_src.t_users left join db_tar.t_users on db_src.t_users.iUserID = db_tar.t_users.iUserID  where db_tar.t_users.iUserID is not null and   db_src.t_users.dtLastTime > db_tar.t_users.dtLastTime; 

直接执行上述语句得到只是一组UPDATE的SQL,并不能直接修改db_tar.t_users,我们可以在shell命令行上执行下面的这个命令完成同步功能:

mysql -Nse select CONCAT('UPDATE db_src.t_users SET ',   'iUserID='', db_src.t_users.iUserID, '',',   'sUserName='', db_src.t_users.sUserName, '',',   'iStatus='', db_src.t_users.iStatus, '',',   'dtLastTime='', db_src.t_users.dtLastTime, '' ',   'WHERE db_tar.t_users.iUserID='', db_src.t_users.iUserID, '';')   from db_src.t_users left join db_tar.t_users on db_src.t_users.iUserID = db_tar.t_users.iUserID  where db_tar.t_users.iUserID is not null and   db_src.t_users.dtLastTime > db_tar.t_users.dtLastTime; | mysql;  

情况3:db_src.t_users不存在某条记录,但在db_tar.t_users中存在。策略->将该记录从后者中删除。

解决该问题的SQL语句为:

SELECT CONCAT('DELETE FROM db_tar.t_users WHERE db_tar.t_users.iUserID=',   db_tar.t_users.iUserID, ';')   FROM db_tar.t_users LEFT JOIN db_src.t_users ON db_src.t_users.iUserID=db_tar.t_users.iUserID   WHERE db_src.t_users.iUserID IS NULL; 

该SQL语句的情况和第二种情况相似,也不能直接执行。所以需要采用同样的方式使用SQL语句才能完成工作。可能已经有人看出了,还有更为简单的 *** 可以处理这种情况。对,确实存在!当然可以使用下面更为简洁的SQL语句:

DELETE FROM db_tar.t_users   WHERE db_tar.t_users.UserID NOT IN (SELECT db_src.t_users.iUserID FROM db_src.t_users); 

上面说了这么多内容,是关于对MySQL连接用法总结的介绍,不知道各位对MySQL的认识是不是更上一层楼了,时时关注IT *** ,学习最新Mysql技术。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/20692.html

分享给朋友:

“MySQL连接用法示例(1)” 的相关文章

windows 7系统如何设置休眠时不断网以便继续完成下载

windows 7系统如何设置休眠时不断网以便继续完成下载

在Windows 7系统的默认设置中,当Windows 7系统处于休眠状态时,会同时断网的。如此一来,无论你正在使用迅雷还是快车等下载工具,同样可以在休眠状态下继续完成下载,最大限度做到从身边的小事开始支持环保。下面我们就详细介绍操作步骤,帮助Windows 7系统用户实现这一节能目标。 首先需要...

如何设置Win 7通知栏重新显示电源按钮

如何设置Win 7通知栏重新显示电源按钮

有些使用本本的朋友可能会发现,右下角通知栏区域会无法显示电源按钮,导致在插上电源或者是使用电池的时候都无法进行区分。造成这种情况大部分都是因为使用了第三方修改过的系统版本或者对于系统优化过度,所以今天就来解决这个问题。 第一步:在开始菜单的搜索窗口输入“gpedit.msc”,进入组策略编辑器,依...

windows 7查看电脑近期使用情况确定有没有被他人使用

windows 7查看电脑近期使用情况确定有没有被他人使用

我一个朋友最近装装了Windows 7,他总感觉有人用了他的电脑,但是一直不确定,他想知道有没有人动用他的电脑,问我有没有办法 我说设置一下就行了: 启动Windows 7,在搜索栏中输入编辑组,马上就搜索到了编辑组策略,点击即可启动程序编辑组策略。依次展开组策略左侧树形列表的计算机配置/管理模...

windows 7系统重装后卡在正在启动Windows开机界面怎么办

windows 7系统重装后卡在正在启动Windows开机界面怎么办

重装系统是我们面对许多电脑问题时的终极方法,不过重装系统也不意味着就能将全部的问题都修复。一些用户在重装系统后开机时,电脑卡在“正在启动Windows”开机界面上了,这要怎么解决呢? Windows 7系统重装后卡在开机界面的解决方法: 一、首先可以看看该故障出现的原因是否是因为启动了acp...

windows 7系统怎么取消禁ping命令?

windows 7系统怎么取消禁ping命令?

当我在虚拟机的linux系统中ping本机的ip发现ping不通,而本机可以ping通虚拟机中的ip。应该是出于安全考虑吧,Windows 7默认在防火墙里禁止了。 1、查看主机ip 打开“开始”程序中的“附件”,找到“命令提示符”打开。输入命令:ipconfig,可以看到本机的ip是192.1...

windows 7系统下Windows服务被流氓软件注册怎么办?Windows服务

windows 7系统下Windows服务被流氓软件注册怎么办?Windows服务

解决方法: 其实处理这些使用流氓软件,需要将相关的.exe文件删除,使它不能再运行,或者直接清除这个服务本身,使计算机重启的时候,它不会再启动。比如Hijackthis扫描,在扫描日志中,一般会把非Windows系统的服务以023的方式列出来,如下面这段: O23 - ...