_대문 | 방명록 | 최근글 | 홈피소개 | 주인놈 |
FrontPage › 랜덤추출
|
|
[edit]
1 테스트 데이터 만들기 #CREATE TABLE users ( uid int, uname varchar(30) ) GO --Inserting 15 rows into the table users SET NOCOUNT ON INSERT [users] ([uid],[uname])VALUES(1,'Vyas Kondreddi') INSERT [users] ([uid],[uname])VALUES(2,'Narayana Kondreddi') INSERT [users] ([uid],[uname])VALUES(3,'Kondreddi') INSERT [users] ([uid],[uname])VALUES(4,'Narayana Vyas Kondreddi') INSERT [users] ([uid],[uname])VALUES(5,'Subhadra Jyothsna') INSERT [users] ([uid],[uname])VALUES(6,'Geetha Madhuri Vungarala') INSERT [users] ([uid],[uname])VALUES(7,'Sridhar Vungarala') INSERT [users] ([uid],[uname])VALUES(8,'Vamsee Mohan') INSERT [users] ([uid],[uname])VALUES(9,'Gopala Krishna Kondreddi') INSERT [users] ([uid],[uname])VALUES(10,'Nagaja Devi Kondreddi') INSERT [users] ([uid],[uname])VALUES(11,'Vijaya Madhuri Govindaraju') INSERT [users] ([uid],[uname])VALUES(12,'Pamarthy Pradeep Kumar') INSERT [users] ([uid],[uname])VALUES(13,'Pamarthy Harinath') INSERT [users] ([uid],[uname])VALUES(14,'Vungarala Sathyanarayana') INSERT [users] ([uid],[uname])VALUES(15,'Pamarthy Ramakrishna') SET NOCOUNT OFF GO [edit]
3 TableSample을 이용한 방법 #WHILE(1=1) BEGIN SELECT TOP 1 uid , uname FROM users TABLESAMPLE(200 ROWS) IF @@ROWCOUNT > 0 BREAK END데이터가 좀 많아야 제대로 써먹을 수 있다. 'TABLESAMPLE(n ROWS)'에서 n은 2 ~ 3 Page정도에 들어갈 row수면 될 것이다. [edit]
4 RAND()함수 이용하기 #--일반적으로.. DECLARE @mx int, @mn int SELECT @mx = MAX(uid), @mn = MIN(uid) FROM users SELECT uid,uname [Lucky Winner is...] FROM users WHERE uid = ROUND(@mn + (RAND() * (@mx-@mn)),0) --만약 중간에 이빨이 빠져서 1개의 Row도 반환하지 못하는 상황이면... DECLARE @mx int, @mn int, @uid int, @uname varchar(200) SELECT @mx = MAX(uid), @mn = MIN(uid) FROM users WHILE(1=1) BEGIN SELECT @uid = uid , @uname = uname FROM users WHERE uid = ROUND(@mn + (RAND() * (@mx-@mn)),0) IF @@ROWCOUNT > 0 BREAK END SELECT @uid, @uname아무래도 데이터가 얼마 정도 쌓이기 전까지는 이 방법을 이용하고, 데이터가 많이 쌓이면 Tablesample을 이용하는 것이 좋겠다.
|
내가 존재하기에 내 안의 이세상은 존재한다. |