Select distinct A from T
或
Select A,max(B),Max(C) from T group by A
或
Select A,max(B),Max(C) from T group by A
解决方案 »
- 如何在exec语句中给变量赋值
- SQL_SERVER中的这个视图如何设计?
- 在winxp sp2上安装 sql server 2000,会首先安装 版本为 2.5 的mdac组件,可是winxp自带的mdac版本就2.81呀,会不会覆盖呢?如果不覆盖,那么装好后机器上的mdac版本是什么呢?
- sql 2005 无法启动
- 分布式异地数据同步的问题,各位老大帮忙!!!!!
- 无法绑定由多个部分组成的标识符
- 如何生成一个不带"-"的GUID
- 事务复制遇到的问题
- 我想遍历一个表的中所有记录,SQL语句应该如何写?
- 取出某一用户的密码并更改,有问题
- 如何sum数据类型为char的字段?在线。。。。。
- 关于变量的问题
由于A可以对应多个B,C,所以你可以指定选大的还是小的。
当然别忘了分组。
(
A type,
B type,
C type
)
create unique index removedups on #ttt(A) with IGNORE_DUP_KEYselect * from yourtable into #tttselect * from #ttt
(
A type,
B type,
C type
)
create unique index removedups on #ttt(A) with IGNORE_DUP_KEYinsert into #ttt(A,B,C) (select * from yourtable)select * from #ttt
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
在authors中,根据state字段,在相同的state字段中随机取出一条记录。
思路:
把所有的state字段提取到一个游标state_cursor 中,再在游标中扫描,没扫描一个字段,就根据当前 关键字把authors表中state字段等于当前字段的记录提取到一个游标state_1_cursor 中,再在游标state_1_cursor 中随机的提取一条记录插入到临时表#test中。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
create procedure get_rnd_record
asdeclare @state varchar(20),
@var1 varchar(50), --保存记录中第一个字段
@var2 varchar(50), --保存记录中第二个字段
@var3 varchar(50) --保存记录中第三个字段
create table #test(fld1 varchar(50),fld2 varchar(50),fld3 varchar(50))
declare state_cursor cursor scroll for
select distinct state from authors
open state_cursor
--FETCH RELATIVE 1 FROM state_cursor
FETCH next from state_cursor into @state
while @@FETCH_STATUS=0
begin declare state_1_cursor cursor scroll for
select state,au_fname,au_lname from authors where state=@state
declare @row_count int --当前关键字的记录数
declare @rnd_recd int --随机记录数
open state_1_cursor
select state from authors where state=@state
set @row_count=@@rowcount
if @row_count=1 --如果只有一行
begin
FETCH next from state_1_cursor into @var1,@var2,@var3
insert into #test values(@var1,@var2,@var3)
end
else --如果有多行
begin
set @rnd_recd=cast(right(RAND()*1000, 2) as int)--产生随机数
while @rnd_recd>@row_count
begin
set @rnd_recd=cast(right(RAND()*1000, 2) as int)----产生随机数
end
FETCH relative @rnd_recd from state_1_cursor into @var1,@var2,@var3
insert into #test values(@var1,@var2,@var3)
end
close state_1_cursor
deallocate state_1_cursor --关闭游标
FETCH next from state_cursor into @state
end
--fetch cursor1 into @i
select * from #test
drop table #test
CLOSE state_cursor --关闭游标
DEALLOCATE state_cursor