zoukankan      html  css  js  c++  java
  • 查找出不同环境下同一张表的数据差异

    新集群sda的数据比老集群的数据多2条,怎样在1千多万条数据中找到这两条不一致的数据
    分段对比条数(10000为步长,步长自己来定)
    在新集群上运行:
    select floor(id/10000) id,
    count(*),max(id),min(id)
    FROM xxx.table
    group by floor(id/10000)
    order by id asc
    在老集群上运行:
    select floor(id/10000) id,
    count(*),max(id),min(id)
    FROM xxxx.table
    group by floor(id/10000)
    order by id asc
    两边结果进行对比,锁定不一致的数据在哪个范围内,然后在具体查明细
     
    为什么上面sql中order by 子句中用别名就可以?

    1)where/group by/having子句中只能直接使用栏位或者常量,而不能使用栏位的别名,除非这个别名来自子查询之中,如:select .... from (select col1 ccc from table) where ccc > 1 
    2)而order by 则可以直接使用别名,如select col1 ccc from table order by ccc 

    这和sql 的执行顺序是有关的,where中的部分先执行 -> 如果有group by,接着执行group by -> select中的函数计算、别名指定再运行-> 最后order by 
    因此,字段、表达式的别名在where子句和group by子句都是不能使用的,而在order by中不仅可以使用别名,甚至可以直接使用栏位的下标来进行排序,如:order by 1 desc,2 asc

  • 相关阅读:
    索引的实现:B+树
    SQL Server 查
    SQL Server 增、删、改、小部分查
    最最最最最基础的SQL Server
    三大范式
    SQLserver数据类型
    第一阶段项目
    2017.10.17一阶段项目心得
    jquery&bootstrap
    国庆小长假结束后的一阶段小测验
  • 原文地址:https://www.cnblogs.com/dcx-1993/p/10549594.html
Copyright © 2011-2022 走看看