去 账号、昵称重复,并取最新一次绑定记录

代码如下:

select t1.* from (SELECT ut.TransactionAccount,u.NickName,
p.ProfessorName ‘绑定老师‘,
ub.UpdateTime AS ‘变动时间‘
FROM dbo.UserBind ub JOIN dbo.UserTransaction ut ON ub.UserId=ut.UserId
JOIN dbo.Users u ON ub.UserId=u.UserId
JOIN dbo.Professor p ON p.Id=ub.ProfessorId
WHERE u.IsEnable=1

AND ub.UpdateTime<‘2016-01-18‘) t1
inner join

(SELECT ut.TransactionAccount,u.NickName,

max(ub.UpdateTime) AS ‘变动时间‘
FROM dbo.UserBind ub JOIN dbo.UserTransaction ut ON ub.UserId=ut.UserId
JOIN dbo.Users u ON ub.UserId=u.UserId
JOIN dbo.Professor p ON p.Id=ub.ProfessorId
WHERE u.IsEnable=1 AND ub.UpdateTime<‘2016-01-18‘

group by ut.TransactionAccount,u.NickName) as t2
on t1.TransactionAccount=t2.TransactionAccount
and t1.变动时间=t2.变动时间

写法思路:

有时间列就取最大时间列
有自增的id就去最大id

如果是想返回一个记录集,并且有时间列的话可以这么做
select 重复列,时间列,其余列 
inner join (select 重复列,max(时间列) as 时间列 from 表 group by 重复列) AS T2
on t1.重复列=t2.重复列 and t1.时间列 =t2.时间列
from 表 AS T1

总结:

写法代码段重复很多,大家有什么好的方法呢???

时间: 2024-08-09 06:27:30

去 账号、昵称重复,并取最新一次绑定记录的相关文章

SpringBoot项目执行脚本, 自动拉取最新代码并重启

gitPullThenRestart.sh # 日期: 20191230 # 作者: 何鹏举 # 说明: 项目部署在阿里云上, 每次编译打包上传比较麻烦, 因此编写此脚本, 用于应用内可以点击按钮进行自动重启. # 备注: 1) 阿里云的插件也是需要每次上传到OSS再启动, 上传的jar包比较大(大部分是第三方依赖), 感觉不好 # 2) 使用jenkins, 就一个项目再去搭建一套jenkins, 必要性也不是很大 # 以下代码中 /root/hekele 为git clone的项目路径, /

SqlServer中用@@IDENTITY取最新ID不准的问题

最近遇到了一个SqlServer中用@@IDENTITY取最新ID不准的问题,经过在网上的一番查找,找到了如下资料,略作记录:"一个网友问我一个关于@@IDENTITY的问题.他的数据库中有一个存储过程,有 insert语句,然后马上就用SELECT @@IDENTITY取刚插入的ID值,通常这是没有问题的,但是问题是ID实际上已经达到了100多万了,而 SELECT @@IDENTITY  返回的只有很小的值(才30多),令人费解. 我开始也不太明白,问他先别管@@IDENTITY,新插入记录

git从gitlab拉取最新的亚博代码到本地体育文件夹

git从gitlab拉取最新的亚博代码到本地体育文件夹:1.Git下载地址 2.安装Git? 3.从管理员手中拿到用户名.邮箱.密码 假设用户名为: itcats_cn 邮箱为[email protected] 密码为12345678 4.初始化git信息(在右键Git Bash输入以下命令) (1) git config --global user.name 'itcats_cn'(2) git config --global user.email '[email protected]'(3)

group by查询每组时间最新的一条记录

错误写法,having time = max(time)在分组之后执行,查询出来只有一条满足条件的数据.having过滤的是组,在order by之后执行 select id,userId,userFlag,lontitude,latitude,time,addr,locationdescribe from user_position group by userId having time = max(time) and userId in (select id from users where

Oracle:查询各组最新的一条记录

oracle中怎么查询各组中最新的一条记录呢?比如说现在有一个表中几条数据如下: 有两种写法:写法一:over partition by 分析函数 SELECT * FROM (select ID_,COMPANY_NAME,USAGE_RATE,DETECTION_RATE,ACCEPTABILITY_RATE,CREATE_TIME,MAX(CREATE_TIME) over(partition by COMPANY_NAME) as "atime" from SPEC_RATE_

取重复记录中时间最新的一条记录Oracle sql语句

WITH t1 AS ( SELECT YLPLID,MAX(SBSJ) SBSJ FROM YLPLCG where YLPLID in(select YLPLID from CYQYCPYLPLGX where CPID='659DE0BC42544B74B660E37E665F437C') group by YLPLID )   SELECT t.YLPLMC,case when t.YLPLLX =1 then '原料' when t.YLPLLX = 2 then '配料' end Y

Oracle初级入门 根据某字段重复只取一条记录,并计计算重复条数

在平常开发中,去重复数据经常使用到,本人新手,接触Oracle也不久,开发中用到的小知识点,记录一下,老鸟可绕道,如果有写错的,请指正. 去重复记录可以使用distinct,当只查询一列数据时,可以轻松去掉重复的数据,当查询多列数据时,如果有一列的数据不相同,distinct则认为数据是不相同的,也就是数据将不会合并,这时类似是group by 某写字段的结果一样,此时的结果可能不是我们想要的.下面说下查询多列时去重复及合计重复记录的条数. 当做个不同的链接查询,得到的结果如下: 1 selec

c#学习之数组 36选7随机数不重复/折半取余

内容: 数组的定义是:数据类型[] 变量名=new 数据类型[n]  变量名.Length表示数组数值长度: 36选7随机数不重复static void Main(string[] args) { int[] a = new int[7];//1)先创建一维数组 Random rand = new Random();//2)定义随机电脑生成随机数: for (int i = 0; i < 7; i++)//3)进行筛分将重复的数字去掉 { int n = rand.Next(36);//随机生成

sql单表中某一字段重复,取最近3条或几条数据

select a.* from tablename a left join tablename b on a.uid=b.uid and a.id>=b.id group by a.id,a.name,a.uid having count(b.id)<=3 order by a.uid,a.id; sql查询语句,针对需求:一个表中某一字段是有重复的数据,针对该字段相同的值只取最近的3条或要求的几条: --记录铭心!