求一SQL语句!!!!!!

wtobias 2005-08-31 02:53:23
例如
表:
A B C D
#1 4 3 6 9
#2 1 2 6 7
#3 2 2 4 0
#4 9 4 7 8
#5 6 2 1 8
求SQL语句:要求是查讯到B不等于2时显示这一行,B等于2时随即显示一行(再有B等于2的所有行里面随即),
即显示结果为: #1 4 3 6 9
#2 1 2 6 7(当然也可以用#3 2 2 4 0或#5 6 2 1 8代替)
#4 9 4 7 8
...全文
104 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
云中客 2005-08-31
  • 打赏
  • 举报
回复
一勺抹茶写的很详细
zhoufeng_xu 2005-08-31
  • 打赏
  • 举报
回复
SELECT TOP 1 *
FROM tb831
WHERE b = '2'
UNION ALL
SELECT *
FROM tb831
WHERE b <> '2'
surn 2005-08-31
  • 打赏
  • 举报
回复
同意 楼上想法
MorningTea 2005-08-31
  • 打赏
  • 举报
回复
--我想到3种方法
--测试数据
create table #T (sn varchar(5),A int, B int,C int,D int)
insert into #T
select '#1',4,3,6,9 union all
select '#2',1,2,6,7 union all
select '#3',2,2,4,0 union all
select '#4',9,4,7,8 union all
select '#5',6,2,1,8

--方法一:遇到B相等的,取sn最大的
select sn as ' ',A,B,C,D from #T T1
where not exists(select T2.sn from #T T2 where
T2.sn > T1.sn and T2.B = T1.B
)
/*
A B C D
----- ----------- ----------- ----------- -----------
#1 4 3 6 9
#4 9 4 7 8
#5 6 2 1 8

(3 row(s) affected)
*/

--方法二:遇到B相等的,取sn最小的
select sn as ' ',A,B,C,D from #T T1
where not exists(select T2.sn from #T T2 where
T2.sn < T1.sn and T2.B = T1.B
)
/*
A B C D
----- ----------- ----------- ----------- -----------
#1 4 3 6 9
#2 1 2 6 7
#4 9 4 7 8

(3 row(s) affected)
*/

--方法三:遇到B相等的,随机取出一个sn
select sn as ' ',A,B,C,D from #T T1
where T1.sn = (select top 1 T2.sn from #T T2 where
T2.B = T1.B order by newid()
)
/*
A B C D
----- ----------- ----------- ----------- -----------
#1 4 3 6 9
#4 9 4 7 8
#5 6 2 1 8 --B=2的是随机取得

(3 row(s) affected)
*/
zjcxc 元老 2005-08-31
  • 打赏
  • 举报
回复
select a,b,c,d from(
select top 1 * from 表 where id<'#2' order by id desc)a
union all
select a,b,c,d from(
select top 1 *,n=newid() from 表 where id<>'#2' order by n)a
union all
select a,b,c,d from(
select top 1 *,n=newid() from 表 where id<>'#2' order by n)a
wtobias 2005-08-31
  • 打赏
  • 举报
回复
例如
表:
A B C D
#1 4 3 6 9
#2 1 2 6 7
#3 2 2 4 0
#4 9 4 7 8
#5 6 2 1 8
求SQL语句:要求是查讯到B不等于2时显示这一行,B等于2时随即显示一行(再有B等于2的所有行里面随即),
即显示结果为: #1 4 3 6 9
#2 1 2 6 7(当然也可以用#3 2 2 4 0或#5 6 2 1 8代替)
#4 9 4 7 8

34,590

社区成员

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

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