页面搜索时SQL表中都多条相同的数据 怎么只选择序号最小的这条?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了页面搜索时SQL表中都多条相同的数据 怎么只选择序号最小的这条?相关的知识,希望对你有一定的参考价值。

页面上有一个输入的查询搜索,针对表hyz中name的。查询语句:select * from hyz where name='%"+name+"%',这样子在页面上输入“zzz”出现zzz的所有数据,但我只想选择最小的min(RenCo)的zzz一条数据即可(举例:页面输入“zzz”,那么只显示RenCo=1的这行数据),这个SQL查询语句怎么写啊?其中select * from保持不变,其它进行变化
搜索的情况很多,比如只搜索“z”,那么就要出现三条数据(zzz,zhang,zhou),都只显示RenCo最小的,也就是RenCo为(1、3、8)的三条数据。采用top 1 肯定不行,因为其它两条显示不出来。

select top 1 * from hyz where name='%"+name+"%'

追问

不行的,搜索的情况很多,比如只搜索“z”,那么就要出现三条数据(zzz,zhang,zhou),都只显示RenCo最小的,也就是RenCo为(1、3、8)的三条数据。如果top 1 其它两条显示不出来。

追答SELECT  name,MIN(RenCo) AS RenCo
FROM    hyz
WHERE   name LIKE '%z%'
GROUP BY name;

追问

select * from变了就查询不了,报错,也就是不能写成
SELECT name,MIN(RenCo) AS RenCo FROM,因为采用了写法是:
sql= stmt.executeQuery("select top 1 * from hyz where name='%"+name+"%' ");
if(sql.next())
while......

参考技术A 最大的一条:selectname,timefromtablewheretimein(selectname,max(time)fromtablegroupbyname)

数据库怎样删除多条重复数据保留一条?

delete 表A where 重复的列名(可以是多列) in (select 重复的列名(可以是多列) from 表A group by 重复的列名(可以是多列) having (count(1)>1) ) where rowid!=(select min(rowid) from 表A group by 重复的列名(可以是多列)having (count(1)>1));
删除重复的数据,留下rowid最小的那条!
参考技术A 一张表里面以两个字段为唯一字段,当几条记录的这两个字段完全相同时,需要删除重复项,如下表:
a b c d
1 2 3 4
1 5 3 5
1 2 7 9
以a、b为唯一字段,第一条和第三条的a、b完全相同,所以,需要删除第一条记录1 2 3 4 或者第三条记录1 2 7 9
即如下结果:
a b c d
1 2 3 4
1 5 3 5

a b c d
1 5 3 5
1 2 7 9

以上是关于页面搜索时SQL表中都多条相同的数据 怎么只选择序号最小的这条?的主要内容,如果未能解决你的问题,请参考以下文章

SQL关联两张表查数据,结果只显示一条。

google怎么做(3.搜索结果重排序)

数据库怎样删除多条重复数据保留一条?

Mysql数据库中多条重复数据,如何只删除一条?

多条同样的记录只选取其中一条记录的SQL怎么写?

sql查询语句大全