文章来源: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相同数据只显示一条”指的是在SQL查询中,如何处理具有重复值的数据,以便在结果集中只显示每组重复数据的一个实例。在这个场景中,用户希望根据特定的字段(如“姓名”)来去重,并显示这些字段的值,...
SQL语句创建表是数据库管理系统中的一种基本操作,用于创建一个新的表。以下是SQL语句创建表的详细知识点: 1. 定义基本表语句 语法:USE 数据库名 CREATE TABLE 表名 (列名 类型(大小) DEFAULT'默认值', ... ...)...
题目 3: 一个叫 department 的表,里面只有一个字段 name,一个共有 4 条纪录,分别是 a,b,c,d,四个球队对现在四个球队进行比赛,用一条 SQL 语句显示所有可能的比赛组合。 答案:select a.name, b.name from team...
在 Access 中,任何一个查询都对应一个 SQL 语句,即查询对象的实质是一条 SQL 语句。打开方法:查询“设计”视图->功能区“视图”按钮->SQL 视图 三、 SQL 的动词 SQL 功能动词可以分为四类: 1. 数据定义:...
在示例中,我们有一个名为`test`的表,包含`id`、`name`、`quarter`和`profile`字段,表示每个ID在四个季度的收益。通过PIVOT函数,我们可以将`quarter`字段的值(1, 2, 3, 4)转化为列名,并将对应的`profile`值...
IN关键字可以判断某个字段的值是否在指定的集合中。如果字段的值在集合中,则满足查询条件,该纪录将被查询出来。如果不在集合中,则不满足查询条件。其语法规则如下:[ NOT ] IN ( 元素1, 元素2, …, 元素n ) [sql...
* 使用UPDATE命令将学生表STUDENT中的学生年龄AGE字段的值增加1岁,正确的命令是UPDATE STUDENT SET AGE = AGE + 1。 * DELETE FROM S WHERE 年龄>60 语句的功能是从S表中彻底删除年龄大于60岁的记录。 二、查询...
当尝试插入一条记录,而该记录的关键字段(主键)已经存在时,应使用`REPLACE INTO`语句,选项B正确。`REPLACE`会首先删除与新记录关键字段匹配的现有记录,然后插入新的记录,确保了主键的唯一性。 3. 创建表的...
一种名为`pagination2`的存储过程采用了这样的策略,它接受SQL语句、页码、每页记录数、需要排序的ID以及排序字段等参数,通过排除已经获取过的前n-1条记录,来选取第n到m条记录。这种方式避免了游标,提升了查询...
- **题目**: 关系型数据库使用的存储结构是多个二维表格,在二维表中每一行称为一条记录,用来描述一个对象的信息。 - **解析**: 关系型数据库的基本单位是表,表是由行和列组成的二维表格。 **5. 完整性约束** - ...
当我们需要插入一条记录,且这条记录的关键字段(主键或唯一索引)与表中已有记录相同,我们通常使用`REPLACE INTO`命令,它会先删除匹配的旧记录,再插入新记录。题目中的选项B `replace into`是正确的。 3. 创建...
生成记录:可以实现对数据库端数据表添加一条或多条纪录的自动成批添加操作。 删除记录:可以实现对数据库端数据表中的记录作批量的条件删除操作。 复制记录:可以实现将数据库中某表向另一表中批量复制记录的...
Sqlite Developer是一个非常非常好的管理工具,有点象Mssql企业管理器,支持多国语言 强大的SQL编辑器: Sqlite Sql语法高亮;Sql编辑历史;Sql关键字自动完成;括号高亮匹配;表,字段名自动完成;自动SQL...
2. 有一个表 table1 有两个字段 FID,Fno,字都非空,写一个SQL 语句列出该表中一个 FID 对应多个不同的 Fno 的纪录。 知识点:自连接(Self-Join)和 EXISTS 子句。 在这个问题中,我们可以使用自连接来解决问题...
向my_employee表中添加首条纪录,要求不在insert语句中使用字段列表 (4).向my_employee表中添加第二条纪录,要求在insert语句中使用字段列表 (5).验证数据是否添加成功 (6).使数据的添加成为永久...
在XPO中,一个持久类(Persistent Class)一般来说映射为一个表类型,该表的每一条纪录即一个持久类的实例。持久类继承自XPObject或XPBaseObject。例如: public class Customer : XPObject 创建对象就创建了一条新...
- **1.4.19 如果查询结果的字段比较少,如何将每条纪录的列在同一行,以增强可读性** - 方法:使用`SET`命令中的`LINELENGTH`选项调整输出格式。 - **1.4.20 常用的几种数据类型的精确度和长度** - 示例:如`...
首先,从表单中获取`name`和`content`字段的值,然后创建一个Recordset对象`rs`,执行SQL查询(这里查询整个`biao`表),并以追加模式(3)和锁定记录(2)打开。通过`AddNew`方法创建新记录,接着将`name`、`...