SQL多表多字段比对方法实例代码

2023-01-07 10:51:27 作者:admin

本文整理自网络,侵删。

目录
  • 表-表比较
    • 整体思路
    • 找出不同字段的明细
      • T1/T2两表ID相同的部分,是否存在不同NAME
      • 两表的交集与差集:判断两表某些字段是否相同
      • 两表的交集与差集:找出T2表独有的id
  • 字段-字段比较
    • 判断两个字段间一对多或多对一的关系
      • 证明id字段不是主键
        • 证明id, name字段不是联合主键
        • 数据准备
          • 总结 

            表-表比较

            整体思路

            • 两张表条数一样
              • 条数相同是前提,然后比较字段值才有意义
            • 两表字段值完全相同【两表所有字段的值相同】
              • 两表所有字段union后,条数与另一张表条数一样
            • 两表字段值部分相同【两表部分字段的值相同】
              • 原理:union有去重功能
              • 两表部分字段union后,条数与另一张的count(distinct 部分字段)一样
            • 找出不同字段的明细

            找出不同字段的明细

            T1/T2两表ID相同的部分,是否存在不同NAME

            select T1.ID,T2.ID,T1.`NAME`,T2.`NAME`FROM A T1LEFT JOIN B T2ON T1.ID = T2.IDAND COALESCE(T1.ID,'') <> ''AND COALESCE(T2.ID,'') <> ''WHERE T1.`NAME` <> T2.`NAME`;

            两表的交集与差集:判断两表某些字段是否相同

            判断两表某些字段是否相同,3种查询结果相同

            -- 写法01SELECT COUNT(1) FROM (select DISTINCT ID,`NAME` FROM A) T1;-- 写法02SELECT COUNT(1) FROM (select DISTINCT ID,`NAME` FROM B) T2;-- 写法03SELECT COUNT(1) FROM (select DISTINCT ID,`NAME` FROM AUNIONSELECT DISTINCT ID,`NAME` FROM B) T0;

            not in与exists

            两表的交集与差集:找出T2表独有的id

            找出只存在于T2,不在T1中的那些id

            • 下面2种写法结果一样
            -- 写法01SELECT T2.`NAME`,T2.* FROM A T2 WHERE  T2.`NAME` IS NOT NULLAND NOT EXISTS (select 1 FROM B T1 WHERE T1.ID = T2.ID);-- 写法02SELECT T2.`NAME`,T2.* FROM A T2 WHERE  T2.`NAME` IS NOT NULLAND T2.ID NOT IN (select T1.ID FROM B T1 );

            字段-字段比较

            判断两个字段间一对多或多对一的关系

            测试id与name的一对多关系以下SQL会报错,报错原因 GROUP BY

            select ID,`NAME`,COUNT(*)FROM AGROUP BY IDHAVING COUNT(`NAME`)>1;

            修改后:

            select ID, COUNT(DISTINCT `NAME`)FROM AGROUP BY IDHAVING COUNT(DISTINCT `NAME`)>1;

            这样就说明id与name是一对多的关系

            阅读剩余部分

            相关阅读 >>

            sqlserver 复制中将大事务分成小事务分发的方法

            mysql命令行下执行sql文件的几种方法

            navicat怎么用sql语句创建视图

            sql随机查询数据的几种解决方案

            sql server 2014安装教程

            mybatis详细讲解动态sql的使用

            sql是层次数据库的标准语言吗?

            php中sql注入漏洞示例 sql注入漏洞修复

            sql server 数据库分区分表(水平分表)详细步骤

            sql如何删除重复数据

            更多相关阅读请进入《sql》频道 >>


            数据库系统概念 第6版
            书籍

            数据库系统概念 第6版

            机械工业出版社

            本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



            在线咨询 拨打电话