zoukankan      html  css  js  c++  java
  • sql语句笔记-2014-2-24

    A 表 (充值记录表) 有以下的字段  -------   hisreload 表

    ID (递增) ,  ToMobile(冲往哪个手机号) ,  refID (guid , 表示一次事务)    ......

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

    B表(transactions)有以下字段

    refID(与A表关联) , opTime (操作时间)           ........

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

    想实现的功能是: 查询 所有手机号及其最后一次充值记录 , 并对操作时间过滤, 例如去掉 最后一次充值在 2013-9-30 之前的

    具体实现是 :

    1 : 先找出每一个手机号对应的最后一次充值记录的ID

        SELECT ToMobile, MAX(ID) AS MaxID
        FROM HisReload
        GROUP BY ToMobile

    2 : 因为第一步找出的 记录没有 refid , 所以再和 hisreload 表做一次 inner  join

    SELECT tt.*
    FROM HisReload tt
    INNER JOIN
        (
        SELECT ToMobile, MAX(ID) AS MaxID
        FROM HisReload
        GROUP BY ToMobile
        ) groupedtt ON tt.ToMobile = groupedtt.ToMobile AND tt.ID = groupedtt.MaxID

    这样得到的结果集就有 refid了, 取refid的目的是为了和transactions表连接 , 以得到 OpTime

    3: 最后再把第二步得到的结果集 和 transaction 表  join ,并对optime做限制,整个sql语句是这样的

    select b.toMobile 
    from
    (
    SELECT tt.*
    FROM HisReload tt
    INNER JOIN
        (
        SELECT ToMobile, MAX(ID) AS MaxID
        FROM HisReload
        GROUP BY ToMobile
        ) groupedtt ON tt.ToMobile = groupedtt.ToMobile AND tt.ID = groupedtt.MaxID
    ) b inner join Transactions a on b.RefID=a.RefID
    where a.OpTime<'2013-9-30'

    得出的结果集是 所有 最后一次充值发生在 2013-9-30 之前的手机号。

  • 相关阅读:
    前端开发 vue,angular,react框架对比1
    前端开发 Angular
    前端开发 Vue Vue.js和Node.js的关系
    net技术
    net技术方案
    软件工程项目费用计算
    前端开发 Vue -4promise解读2
    前端开发 Vue -4promise解读1
    mybatis与hibernate区别
    struts2和springmvc的区别
  • 原文地址:https://www.cnblogs.com/lthxk-yl/p/3564420.html
Copyright © 2011-2022 走看看