数据库select检索多个满足条件的值,如何只取其中一个,急....

我有一张表A,有三个字段BH,SHULIANG1,SHULIANG2,(编号,数量1,数量2),我现在要从A中检索SHULIANG1>=5 AND SHULIANG1 <=10的数据,然后去其中SHULIANG2最小的一个BH,放到变量LS_BH中,请问,应该如何写SELECT语句,求大神支招~~~为什么这样写:
select BH into LS_BH from A where SHULIANG1>=5 and SHULIANG1 <=10 having SHULIANG2=
min(SHULIANG2)不行,提示此处不允许使用分组函数.这样写也不行:select top 1 BH as LS_BH from t_srt where SHULIANG1 between 5 and 10 order by SHULIANG2,提示top标识符无效,我用的是oracle数据库,和PL/SQL工具

先说一点,一个变量只能存储一条数据

你要是查出多个的话,需要用到游标

select t.bh --into ls_bh 
from
(select bh,min(shuliang2) shuliang2 from A where SHULIANG1>=5 and SHULIANG1 <=10 group by bh) t

先把into ls_bh 注释掉,看下运行结果

有问题追问,百度知道新版很烂,无法显示追问,请追问后私信,并附上问题地址,避免耽误时间过长解答不了你的问题

追问

还是不行啊 ,检索出来的还是表A中的所有数据!我只想查出shuliang2最小的那一个....

追答select t.bh from a where shuliang2 in
(select min(shuliang2)  from A where SHULIANG1>=5 and SHULIANG1 <=10 group by bh)

这样呢

追问

有可能有多条记录,shuliang2相等,那么检索出来的bh就不唯一了...还是不行...

追答select t.bh from a where shuliang2 in
(select min(shuliang2)  from A where SHULIANG1>=5 and SHULIANG1 <=10 group by bh)
where rownum<=1追问

哇,可以了,太感谢你啦~~~~

追答

采纳了呗

温馨提示:内容为网友见解,仅供参考
无其他回答

数据库select检索多个满足条件的值,如何只取其中一个,急...
先说一点,一个变量只能存储一条数据 你要是查出多个的话,需要用到游标 select t.bh --into ls_bh from(select bh,min(shuliang2) shuliang2 from A where SHULIANG1>=5 and SHULIANG1 <=10 group by bh) t先把into ls_bh 注释掉,看下运行结果 有问题追问,百度知道新版很烂,无法显...

数据库select检索多个满足条件的值,如何只取其中一个
1,2);insert into t_srt values('002',5,2);insert into t_srt values('003',6,3);insert into t_srt values('004',7,4);insert into t_srt values('005',8,5);insert into t_srt values('006',

数据库语句中筛选出来多个结果后,如何只筛选出一个想要的结果?
首先来说一下sql的大概的执行顺序,主流的数据库一般都是这样的,from表(找到数据集)—where(对数据进行删选)—group by(对数据进行分组,合并处理)—select(选出数据项)—order by(对结果数据集进行排序),这是大致粗糙的顺序,还有排重啊、删选组啊等等,不细说了,最重要的是看执行计划...

SQL查询的时候有多个满足的条件我只想返回第一个结果就行,该怎么改...
Select top 1 u2.fnumber as 仓库代码,u2.FName as 仓库名称,ti.fnumber as 物料代码 ,ti.FName as 物料名称 ,ti.FModel as 型号,u1.FBatchNo as 批号,tm.FName as 基本单位,cast(u1.FQty as numeric(18,0)) as 基本单位数量,convert(nvarchar,t1.FDate,111) as 制单日期,convert(n...

mysql数据库中如何将查出的值取其中一部分值,只用数据库中的值,比如...
mysql> select * from test;+---+---+ | id | val | +---+---+ | 1 | 1+2 | | 2 | 2+3 | | 3 | 3+4 | +---+---+ 3 rows in set (0.00 sec)mysql> SELECT SUBSTRING_INDEX(val,'+',1) AS a,SUBSTRING_INDEX(val,'+',-1) AS b F ROM test;+--...

SQL数据库多个表格中,从3个表格中根据条件,提取字段的一个问题
left join表示左边的表中数据将全部显示,无论右边表中有无对应数据。right join相反,表示右边的表中数据将全部显示,无论左边表中有无对应数据。inner join表示只显示左边右边表中都满足连接条件的数据,左边表中不满足连接条件的数据将不再显示;右边表中不满足连接条件的数据也将不再显示。呵呵。所以...

EXCEL中当多个单元格都满足条件时,怎么只取一个做统计?
可以填加辅助列,用这个模式if(and(c=b,oR(a>0,b>0)),1,0)

在mysql数据库中如何让某个字段有重复的只取一条
给个例子把,比如:表table_a 4条数据id A B C D01 ab 1a2 1b2 12102 ab 2a3 3b3 4a103 ac 1a2 1b2 12104 ac 2a4 3b2 52g何让A字段重复取条 比01 ab 1a2 1b2 12103 ac 1a2 1b2 121 保留相同A值id行select *from table_a awhere not exists (select 1 from table_a b...

ASP,ACCESS如何调用数据库中值相同时只取1个
假设b.b3是信息发布的日期。select b.user_id,max(b3)from a,b where a.user_id=b.user_id group by b.user_id

数据库Select语句里面如何在一个顺序里面提前其中几列数据?
select 特殊的几个 from table where 条件 union all (select 其他的几个 from table where 条件 order by sort_id)---补充--- 排到第三或第四的话 ,那你就头两条先按你原来的排序实现,中间union all那几个特殊的 最后排除掉头两条,剩余的再union all,不过这样似乎是麻烦点了,不过也没...

相似回答