`
javababy1
  • 浏览: 1180063 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

如何判断mysql中数据表中两个列之间的相同记录和不同记录

阅读更多

问题的描述如下:给定数据库中的两列,每个列内的所有记录可以视为一个集合,如何求这两个集合的交集,差集等。示例:

table1中字段firstname

  • tom
  • kevin
  • john
  • steven
  • marry
  • anthony

table2中字段username

  • jack
  • tom
  • william
  • tom
  • marry
  • Thomas

两个列的交集是tom, marry。解决的方法是采用union和group by:

SELECT name

FROM (SELECT firstnameas name FROM table1 union SELECT usernameas name FROM table2) as alltable

group by name having count(*) > 1;

两个列的交集的补集:

SELECT name

FROM (SELECT firstnameas name FROM table1union SELECT usernameas name FROM table2) as alltable

group bynamehavingcount(*) = 1;

第一个列和第二个列的差集:

SELECT * FROM table1

WHERE firstname not in

(SELECT name

FROM (SELECT firstnameas name FROM table1union SELECT usernameas name FROM table2) as alltable

group bynamehavingcount(*) > 1)

类似的可以求第二个列和第一个列的差集。如果一个集合是另一个集合的子集,情况会简单一点。如果希望包含重复的记录,使用union all.

大家可以自己考虑一下。当然这个肯定不是唯一的解决方法了,就算抛砖引玉了。

关于union,可以参考http://www.w3schools.com/sql/sql_union.asp

参考:http://www.mysqltutorial.org/compare-two-tables-to-find-unmatched-records-mysql.aspx

分享到:
评论

相关推荐

    MySQL根据某一个或者多个字段查找重复数据的sql语句

    1.表中有id和name 两个字段,查询出name重复的所有数据 select * from xi a where (a.username) in (select username from xi group by username having count(*) > 1) 2、查询出所有数据进行分组之后,和重复数据...

    MySQL数据库:表的概念.pptx

    一个表就是一个关系,表实质上就是行列的集合,每一行代表一条记录,每一列代表记录的一个字段。每个表由若干行组成,表的第一行为各列标题,其余行都是数据。在表中,行的顺序可以任意。不同的表有不同的名字。 表...

    MySQL命令大全

    MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    MySQL表数据迁移自动化

    在这次MySQL的实战中,我的数据库已经做了4个分片,分布在不同的4台机器上,每台机器上的数据量有1.7亿(1.7*4=6.8亿),占用空间260G(260*4=1040G),这次迁移的目的就是删除掉一些历史记录,减轻数据库压力,有人...

    mysql数据库的基本操作语法

    外键约束是保证一个或两个表之间的参照完整性,外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系。 也就是说从表的外键值必须在主表中能找到或者为空。 当主表的记录被从表参照时,主表的记录将不...

    MYSQL安装包官方试用版

    在NDB Cluster存储引擎中,TEXT和BLOB列的实施是不同的,其中TEXT列中的每个记录由两个单独部分组成。一个是固定大小(256字节),并且实际上保存在原表中。另一个包括超出256字节的任何数据,保存在隐含的表中。第2个...

    《高性能MySQL》读书笔记.docx

    数据库整理文 索引一般是放在磁盘中的,索引是存储引擎用于快速找到记录的一种数据结构。索引优化应该是对查询优化最有效的手段了。...创建一个包含两个列的索引,和创建两个包含只包含一列的索引是大不相同的。

    mysql中多表删除其中ID相同记录的方法

    最近又有网友评论了我的这个回答,我才开始查了一下百度,发现Mysql4.0以上版本已经可以通过一条delete删除多个表的数据了。看来我确实在误人子弟了,只能说声抱歉,好在楼主没有选我的答案,要不然罪过大了。 最后...

    MYSQL常用命令大全

    MySql的用户管理是通过 User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。其中GRANT的常用用法如下: grant all on mydb...

    MYSQL培训经典教程(共两部分) 1/2

    4 1.1.5总结 5 1.2 关系数据库管理系统 5 1.2.1 关系数据库系统...列和数据类型 9 1.3.2函数 9 1.3.3 SQL的语句 9 1.3.4总结 10 1.4 MYSQL数据处理 10 1.4.1 MySQL的数据 10 1.4.1.1、字符...

    数据库基础实验的实验报告附图

    2.对各表中的数据进行不同条件的连接查询和嵌套查询; 1) 查询每个学生及其选课情况; 2) 查询每门课的间接先修课 3) 将STUDENT,SC进行右连接 4) 查询有不及格的学生姓名和所在系 5) 查询所有成绩为优秀...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...

    计算机病毒与防护:MYSQL联合查询上.ppt

    单击此处添加标题 * * * * * * * * * * * * 目录页 MYSQL联合查询上 联合查询注入原理-SQL的union查询 SQL中UNION 操作符用于合并两个或多个 SELECT 语句的结果集。UNION 内部的 SELECT 语句必须拥有相同数量的列。...

    完美解决Thinkphp3.2中插入相同数据的问题

    为了避免插入相同的数据(所谓相同的数据,其主键相同或者是唯一索引的字段相同),我创建的索引如下图,主键索引为自增字段,不可能出现重复,即唯一索引可能会出现重复,我希望的是uid,year,mounth,day 这三个字段...

    MYSQL培训经典教程(共两部分) 2/2

    4 1.1.5总结 5 1.2 关系数据库管理系统 5 1.2.1 关系数据库系统...列和数据类型 9 1.3.2函数 9 1.3.3 SQL的语句 9 1.3.4总结 10 1.4 MYSQL数据处理 10 1.4.1 MySQL的数据 10 1.4.1.1、字符...

    Mysql下载安装

    外键:外键用于关联两个表。 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似...

    MySQL 入门学习 ——基础教程

    输入show databases并回车,屏幕显示出当前已有的两个数据库mysql和test · 方法二:不使用winmysqladmin 1)、在DOS窗口下,进入d:/mysql/bin目录 2)、win9X下)运行: mysqld 在NT下运行: mysqld-nt --...

    dbcopier:将数据从一个 MySQL 数据库表复制到另一个

    #DB Copier 将您的数据从一个 MySQL 数据库表复制到另一个按列,具有不同的名称或结构有一次我遇到了将数据从一个 MySQL 数据库传输到另一个具有完全不同结构但不是数据的问题。 需要手动控制,所以我写了这个脚本来...

    mysql 替换字段部分内容及mysql 替换函数replace()

     此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在就相当于  insert into table (id,name) values(‘1′,’aa’),(‘2′,’bb’)  如果存在相同的值则不会插入数据 2.replace(object,search,rep

    database-sync:数据库表同步程序,支持不同数据库间表结构和数据的同步,数据抽取

    两个表之间数据的同步,可以增量或全量更新。 两个表表结构的同步,包括自动建表,原表扩展长度长度或增加长度,目标表也做相同动作。 支持指定原表或目标表的分段序列,更灵活。替换按目标表的分段序列查询原表的...

Global site tag (gtag.js) - Google Analytics