需求描述:根据某一个字段或几个字段去重来显示任一条数据,第一条或最后一条。

数据样式如下图:

尝试解决:

--count(*)方法(只把条数为1条的显示出来了,超过1条全部过滤了)
select * from t4 where 自编条码 in
(select 自编条码 from t4 group by 自编条码 having count(id)=1)

以上方法,会把仅1条记录的显示,但是重复的并没有保留其中一条,也过滤掉了。

所以,我们需要变化一下,提供三种解决方法:

一、通过row_number按重复字段进行分组排序,然后显示第1条,采用AB表方式:

--方法1 row_numer(),等值查询(即AB表查询)
select a.* from t4 a ,(
select id,自编条码,ROW_NUMBER() over(partition by 自编条码 order by id) as nid from t4 ) b
where a.id = b.id and b.nid=1

二、同方法一,通过row_number按重复字段进行分组排序,然后显示第1条。但采用子查询方式:

select a.* from
( select ROW_NUMBER()over (partition by 自编条码 order by id) as nid ,* from t4 ) a
where a.nid=1

三、通过分组取最小值或最大值为解决。

select * from t4 where id in (select min(id) from t4 group by 自编条码)

这种方法最简单,但对ID要求,必须是数字,能够进行MIN或MAX计算。如果没有纯数字ID,可以利用ROW_NUMBER先建立NID,再MIN。

select ROW_NUMBER()over (partition by 自编条码 order by id) as nid ,* from t4

以上三种方案效果相同。

SQL 去重 显示第一条数据 显示一条数据的更多相关文章

  1. 显示刚刚添加的最后一条数据,access,选择语句,select

    显示刚刚添加的最后一条数据,access,选择语句,select select top 1  * from s1 order by id desc

  2. sql去重;同一条数据出现多条取一条的sql语句

    理论上相同数据个别字段值不同重复问题: 1.某字段重复,其他字段值不同时,按重复字段分组只取一条的sql语句(eg:相同的数据某个字段值有差别导致存储两条或多条无意义重复数据的情况)select s. ...

  3. sql 分组后显示每组的前几条记录

    sql 分组后显示每组的前几条记录 如   表中记录是             code       serialno             A1               1           ...

  4. “取出数据表中第10条到第20条记录”的sql语句+selecttop用法

    1.首先,select top用法: 参考问题 select top n * from和select * from的区别 select * from table -- 取所有数据,返回无序集合 sel ...

  5. “取出数据表中第10条到第20条记录”的sql语句+select top 使用方法

    1.首先.select top使用方法: 參考问题  select top n * from和select * from的差别 select * from table --  取全部数据.返回无序集合 ...

  6. 关于vue+element-ui项目的分页,返回默认显示第一页的问题解决

    关于vue+element-ui项目的分页,返回默认显示第一页的问题解决     问题描述 当前页面如下: 然后点击页码跳到第3页,然后在第三页点击页面链接跳转到新的页面 然后在新页面点击返回按钮,返 ...

  7. AGS中通过FeatureServer插入数据失败、插入数据在WMTS请求中无法显示以及version概念的讨论

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 在多个项目中,当我方接口给其他部门人员使用时出现了插入数据失 ...

  8. 在SQL SERVER中获取表中的第二条数据

    在SQL SERVER中获取表中的第二条数据, 思路:先根据时间逆排序取出前2条数据作为一个临时表,再按顺时排序在临时表中取出第一条数据 sql语句如下: select top 1 * from(se ...

  9. Winform之跨线程访问控件(在进度条上显示字体)

    此文章对于遇到必须使用线程但是没有办法在线程内操作控件的问题的处理  有很好的解决方案(个人认为的.有更好的方案欢迎交流.) 在做跨线程访问之前我们先了解下我们所做的需要达到的效果: 这个是批量的将x ...

随机推荐

  1. Linux 基础学习大考核

    0.关于Linux的简介 Linux(好又免费)的组成部分: Linux 是一种计算机操作系统: 一系列能让您与计算机进行交互操作并运行其它程序的程序. 操作系统由多种基础程序构成.它们使计算机可以与 ...

  2. MongoDB命令及其MongoTemplate的混合讲解

    前言 前面讲解了如何在springboot中集成mongodb,本文将讲解mongodb命令操作及其MongoTemplate的使用.穿插的目的在于不用先去寻找mongodb的命令又去寻找在java中 ...

  3. [DBSDFZOJ 多校联训] Password

    Password password.in/.out 描述 你来到了一个庙前,庙牌上有一个仅包含小写字母的字符串 s. 传说打开庙门的密码是这个字符串的一个子串 t,并且 t 既是 s 的前缀又是 s ...

  4. Python 执行命令行操作。

    os.system os.popen() commands.getstatusoutput(cmd) (status, output) = commands.getstatusoutput('cat ...

  5. Programming Assignment 3: Baseball Elimination

    编程作业三 作业链接:Baseball Elimination & Checklist 我的代码:BaseballElimination.java 问题简介 这是一个最大流模型的实际应用问题: ...

  6. Python正则表达式(总)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6445044.html 本文出自:[Edwin博客园] Python正则表达式(总) search(patte ...

  7. python选课系统

    程序名称: 选课系统 角色:学校.学员.课程.讲师 要求: 1. 创建北京.上海 2 所学校 2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海 ...

  8. Python安装Windows的pip包

    1.到https://www.python.org/downloads/ 下载python包安装python 2.到https://pypi.python.org/pypi/pip#downloads ...

  9. 【OpenCV】透视变换矫正

    演示结果参考: 功能实现:运行程序,会显示图片的尺寸,按回车键后,依次点击需矫正的图片的左上.右上.左下.右下角,并能显示其坐标,结果弹出矫正后的图片,如图上的PIC2对话框.可以继续选择图片四个点进 ...

  10. struts2 FilterDispatcher 和 StrutsPrepareAndExecuteFilter 的区别(转)

    FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.! StrutsPrepareAndExecuteFilter是自2.1.3开始就替代了FilterDispatc ...