`
flm_llx
  • 浏览: 62544 次
  • 性别: Icon_minigender_1
  • 来自: 应县
社区版块
存档分类
最新评论

SQL返回某个单表中存在相同字段值纪录中的一条纪录!

阅读更多
文章来源:CSDN社区 - 原文地址:http://topic.csdn.net/t/20050817/18/4214856.html
比如某个表:  
        id         stuNo         stuName       stuAddress       stuTel             remark    
          1           111               aa                     aaa               8888               aaaaa  
          2           111               bb                     bbb               6666               bbbbb  
          3           111               cc                     ccc               6666               ccccc  
          4           222               dd                     ddd               6666               ddddd  
          5           333               ee                     eee               5555               55555  
   
  目前,stuNo字段中有三条记录(id为1,2,3)是相同的,都为“111”,请问怎么写SQL才能返回此三条记录中的随便某一个纪录呢?随便返回id为1,2,3中的某一条记录而不是返回单个字段。
方法1:
select     *  
  from   表名   as   t1  
  where   id   in  
  (select   top   1   id  
    from   表名   as   t2  
    where   t1.stuno=t2.stuno  
    order   by   newid())
方法2:
select   *  
   
  from   表   a  
   
  where   id=(select   max(id)  
                      from   表  
                      where   stuNo=a.stuNo  
                      )
方法3:
declare   @tab   table(id   int,stuNo   varchar(10),stuName   varchar(10),stuAddress   varchar(10),stuTel   varchar(10),remark   varchar(10))  
  insert   @tab   values(1,'111','aa','aaa','8888','aaaaa')  
  insert   @tab   values(2,'111','aa','aaa','8888','aaaaa')  
  insert   @tab   values(3,'111','aa','aaa','8888','aaaaa')  
  insert   @tab   values(4,'222','dd','ddd','6666','ddddd')  
  insert   @tab   values(5,'333','ee','eee','5555','55555')  
  --查看原始数据  
  select   *   from   @tab  
   
   
  --删除重复数据  
  delete   from     @tab   where   id   not   in   (select     max(id)     from     @tab     group     by   stuNo,stuName,stuAddress,stuTel,remark)  
  --查看结果  
  select   *   from   @tab  
方法4:
select   *   from   table1  
  group   by   stuNo          
  having   count(*)>1
方法5:
随机取值:  
   
  select   *   from   表   t  
  where   id=  
                        (  
                            select   top   1   id  
                            from   表    
                            where   stuNo=t.stuNo  
                            order   by   newid()  
                        )  
   
  取id最大值:  
   
  select   *   from   表   t  
  where   not   exists  
                                  (  
                                      select   1   from   表  
                                      where   stuNo=t.stuNo   and  
                                                  id>t.id  
                                  )  
   
  取id最小值:  
   
  select   *   from   表   t  
  where   not   exists  
                                  (  
                                      select   1   from   表  
                                      where   stuNo=t.stuNo   and  
                                                  id<t.id  
                                  )  
 
方法6:
select   *  
    from   表名  
  where   Id   in   (select   Max(id)  
                              from   表名   as   t1  
                            grou   by   stuNo  
                            having   Count(*)   >   1)  
  随机取值也可以按   vivianfdlpw()   (   )   思路来做Top
方法7:
select   *  
  from   表   a  
  where   id=(select   max(id)  
                      from   表  
                      where   stuNo   =   a.stuNo  
                      )  
  方法8:
select   *   from   a   where   id   in   (select   max(id)   from   a   group   by   stuno   )  
   
  or    
   
  select   *   from   a   where   id   in   (select   min(id)   from   a   group   by   stuno   ) 
分享到:
评论

相关推荐

    对某一字段分组后,取出另一字段最大值的所有记录

    表:t_test -------------------------------------- id(int) cost(int) des Autoid(id) -------------------------------------- 1 10 aaaa 1 1 15 bbbb 2 1 20 cccc 3 ...取每一类id中cost最大的纪录

    sql相同数据只显示一条.doc

    标题中的“sql相同数据只显示一条”指的是在SQL查询中,如何处理具有重复值的数据,以便在结果集中只显示每组重复数据的一个实例。在这个场景中,用户希望根据特定的字段(如“姓名”)来去重,并显示这些字段的值,...

    SQL语句创建表.doc

    SQL语句创建表是数据库管理系统中的一种基本操作,用于创建一个新的表。以下是SQL语句创建表的详细知识点: 1. 定义基本表语句 语法:USE 数据库名 CREATE TABLE 表名 (列名 类型(大小) DEFAULT'默认值', ... ...)...

    SQL面试题目-sqlServer

    题目 3: 一个叫 department 的表,里面只有一个字段 name,一个共有 4 条纪录,分别是 a,b,c,d,四个球队对现在四个球队进行比赛,用一条 SQL 语句显示所有可能的比赛组合。 答案:select a.name, b.name from team...

    AccessSQL查询[借鉴].pdf

    在 Access 中,任何一个查询都对应一个 SQL 语句,即查询对象的实质是一条 SQL 语句。打开方法:查询“设计”视图-&gt;功能区“视图”按钮-&gt;SQL 视图 三、 SQL 的动词 SQL 功能动词可以分为四类: 1. 数据定义:...

    简单有用的SQL脚本 (行列互转,查询一个表内相同纪录等)

    在示例中,我们有一个名为`test`的表,包含`id`、`name`、`quarter`和`profile`字段,表示每个ID在四个季度的收益。通过PIVOT函数,我们可以将`quarter`字段的值(1, 2, 3, 4)转化为列名,并将对应的`profile`值...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    IN关键字可以判断某个字段的值是否在指定的集合中。如果字段的值在集合中,则满足查询条件,该纪录将被查询出来。如果不在集合中,则不满足查询条件。其语法规则如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n ) [sql...

    2022届-实施工程师-SQL笔试题.docx

    * 使用UPDATE命令将学生表STUDENT中的学生年龄AGE字段的值增加1岁,正确的命令是UPDATE STUDENT SET AGE = AGE + 1。 * DELETE FROM S WHERE 年龄>60 语句的功能是从S表中彻底删除年龄大于60岁的记录。 二、查询...

    东北财经大学《MySQL数据库系统及应用》单元作业二-04.docx

    当尝试插入一条记录,而该记录的关键字段(主键)已经存在时,应使用`REPLACE INTO`语句,选项B正确。`REPLACE`会首先删除与新记录关键字段匹配的现有记录,然后插入新的记录,确保了主键的唯一性。 3. 创建表的...

    经过优化测试的SQL分页存储过程.pdf

    一种名为`pagination2`的存储过程采用了这样的策略,它接受SQL语句、页码、每页记录数、需要排序的ID以及排序字段等参数,通过排除已经获取过的前n-1条记录,来选取第n到m条记录。这种方式避免了游标,提升了查询...

    SQL模拟考试题及答案1.docx

    - **题目**: 关系型数据库使用的存储结构是多个二维表格,在二维表中每一行称为一条记录,用来描述一个对象的信息。 - **解析**: 关系型数据库的基本单位是表,表是由行和列组成的二维表格。 **5. 完整性约束** - ...

    东北财经大学《MySQL数据库系统及应用》单元作业二-04.pdf

    当我们需要插入一条记录,且这条记录的关键字段(主键或唯一索引)与表中已有记录相同,我们通常使用`REPLACE INTO`命令,它会先删除匹配的旧记录,再插入新记录。题目中的选项B `replace into`是正确的。 3. 创建...

    中文编程软件雅奇880 2012企业版免费破解版

     生成记录:可以实现对数据库端数据表添加一条或多条纪录的自动成批添加操作。  删除记录:可以实现对数据库端数据表中的记录作批量的条件删除操作。  复制记录:可以实现将数据库中某表向另一表中批量复制记录的...

    Sqlite Developer(SQL管理工具) v3.9.7 简体中文版.zip

    Sqlite Developer是一个非常非常好的管理工具,有点象Mssql企业管理器,支持多国语言   强大的SQL编辑器: Sqlite Sql语法高亮;Sql编辑历史;Sql关键字自动完成;括号高亮匹配;表,字段名自动完成;自动SQL...

    Oracle面试题及答案整理.docx

    2. 有一个表 table1 有两个字段 FID,Fno,字都非空,写一个SQL 语句列出该表中一个 FID 对应多个不同的 Fno 的纪录。 知识点:自连接(Self-Join)和 EXISTS 子句。 在这个问题中,我们可以使用自连接来解决问题...

    Oracle数据库基础学习资料整合

    向my_employee表中添加首条纪录,要求不在insert语句中使用字段列表 (4).向my_employee表中添加第二条纪录,要求在insert语句中使用字段列表 (5).验证数据是否添加成功 (6).使数据的添加成为永久...

    ORM架构XPO学习指南(超好用的数据访问层组件)

    在XPO中,一个持久类(Persistent Class)一般来说映射为一个表类型,该表的每一条纪录即一个持久类的实例。持久类继承自XPObject或XPBaseObject。例如: public class Customer : XPObject 创建对象就创建了一条新...

    数据业务工程师DB2入门指南

    - **1.4.19 如果查询结果的字段比较少,如何将每条纪录的列在同一行,以增强可读性** - 方法:使用`SET`命令中的`LINELENGTH`选项调整输出格式。 - **1.4.20 常用的几种数据类型的精确度和长度** - 示例:如`...

    asp连接数据库代码实例.pdf

    首先,从表单中获取`name`和`content`字段的值,然后创建一个Recordset对象`rs`,执行SQL查询(这里查询整个`biao`表),并以追加模式(3)和锁定记录(2)打开。通过`AddNew`方法创建新记录,接着将`name`、`...

Global site tag (gtag.js) - Google Analytics