首先,我的表非常简单:
create table card(
cid int identity(1000001,1) primary key,
cname nvarchar(100) not null unique,
att int,
def int,
blood int,
star int
)
里面有些许个数据,现在,我想查询出 star对应的值的随机一条数据,先用java想了想,可以实现,但是比较麻烦,需要先查询出star对应的值,然后转换为数组或者list,再写随机数,然后得到值。
然后,在网上找了下资料,得到一下代码:
SELECT TOP 1 card.cid FROM card where star = 3
GROUP BY cid
ORDER BY NEWID()
其中,TOP 1 是取一个值,如果想取多个值,改一下就行了
但是这样得到的只有cid的值,想要得到所有的值,那最简单的方法,必然是 card.* 。 但是这样会报错,因为有group by
于是,再改了一下:
select * from card where cid = (
SELECT TOP 1 card.cid FROM card where star = 3
GROUP BY cid
ORDER BY NEWID()
);
搞定