在子查询中怎么获取A最小值的B列

Dision LI 2011-07-27 08:45:34

select 1,最小=(
select min(A) FROM (

select 1 as 'A',1 as 'B'
union
select 1 as 'A',2 as 'B'
union
select 2 as 'A',3 as 'B'
union
select 3 as 'A',4 as 'B'
union
select 3 as 'A',4 as 'B'
union
select 4 as 'A',4 as 'B'
union
select 2 as 'A',4 as 'B'
) T

)

--from tb


在子查询中怎么获取A最小值的B列,默认为第一条

得出结果 1 1
...全文
249 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
gbren 2011-08-10
  • 打赏
  • 举报
回复
SELECT TOP 1 A ,
MIN(B) B
FROM ( SELECT 1 AS 'A' ,
1 AS 'B'
UNION
SELECT 1 AS 'A' ,
2 AS 'B'
UNION
SELECT 2 AS 'A' ,
3 AS 'B'
UNION
SELECT 3 AS 'A' ,
4 AS 'B'
UNION
SELECT 3 AS 'A' ,
4 AS 'B'
UNION
SELECT 4 AS 'A' ,
4 AS 'B'
UNION
SELECT 2 AS 'A' ,
4 AS 'B'
) T
GROUP BY A
ORDER BY A
Dision LI 2011-07-27
  • 打赏
  • 举报
回复
谢谢2楼。我看一下先
叶子 2011-07-27
  • 打赏
  • 举报
回复

;with T as(
select 1 as 'A',1 as 'B'
union select 1 as 'A',2 as 'B'
union select 2 as 'A',3 as 'B'
union select 3 as 'A',4 as 'B'
union select 3 as 'A',4 as 'B'
union select 4 as 'A',4 as 'B'
union select 2 as 'A',4 as 'B')

select top 1 * from T a
where B=(select min(B) from T where A=a.A)
order by A

/*
A B
----------- -----------
1 1
*/


刚才理解错了,修正一下。
Dision LI 2011-07-27
  • 打赏
  • 举报
回复
我想获取的是min(A)那行的列B的值
AcHerat 元老 2011-07-27
  • 打赏
  • 举报
回复

declare @tb table(a int,b int)
insert into @tb
select 1,1
union
select 1,2
union
select 2,3
union
select 3,4
union
select 3,4
union
select 4,4
union
select 2,4

select *
from @tb t
where not exists (select 1 from @tb where a < t.a or (a = t.a and b < t.b))

/***************

a b
----------- -----------
1 1

(1 行受影响)
叶子 2011-07-27
  • 打赏
  • 举报
回复

select 1, min(A)
FROM (select 1 as 'A',1 as 'B'
union select 1 as 'A',2 as 'B'
union select 2 as 'A',3 as 'B'
union select 3 as 'A',4 as 'B'
union select 3 as 'A',4 as 'B'
union select 4 as 'A',4 as 'B'
union select 2 as 'A',4 as 'B') T
/*
1 1
*/

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧