database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 27114 게시물 읽기
No. 27114
질문 하나 드리겠습니다.
작성자
김민균(terasos)
작성일
2007-10-29 11:35
조회수
2,366

디비의 내용을 불러와서 보여줘야 하는데.. 


사용자가 들어올때마다 order by 를 다르게 해서 보여줘야 합니다.


다시말하자며 사용자가 리스트를 볼때 순번을 골고루 섞어서 보여줘야 합니다.


그래서 말인데..  order by를 rand() 함수를 이용하여 불러온뒤에 게시판형식의 페이징기능을 어떻게 처리해야 하는지.. 


rand()를 사용하면 페이지를 변경하였을경우 중복 또는 못불러오는 데이타가 존재 할꺼 같습니다.


혹시 방법을 아시거나. 아니면 다른 방안이 있으면 알려주시기 바랍니다.


부탁드립니다.

이 글에 대한 댓글이 총 1건 있습니다.

직접 해본적은 없지만, 경험상 RAND()의 시드값을 조정해서 풀 수 있을 것 같습니다.

 

사용자가 새로 로그인할 때마다, 같은 사용자라고 해도 다른 순서에 의해서 보여지기를 원한지만,

같은 세션이 유지되는 동안에는 순서가 고정되고, 페이지를 구현하기를 원하시는 것으로 보입니다. 맞나요?

 

사용자가 로그인할 때, 쿠키나 세션에 적당한 랜덤 값을 저장하시고, 이를 MySQL 쿼리의 시드로 사용하시면 문제가 해결될 것 같습니다.

 

이를테면,

SELECT * from T1 order by rand() 는 결과가 계속 바뀌지만,

SELECT * from T1 order by rand(100) 은 결과가 계속 같습니다.

 

이는 프로그래밍 언어에서 srand(...)에 같은 값을 넣을 경우 같은 순서대로 랜덤이 되는 것과 같은 원리로, 이를 통해 쿠키나 세션에 저장된 랜덤 값을 MySQL의 랜덤 시드에 넣으시면 1회 접속에서는 올바른 페이징 구현이 가능할 것으로 생각됩니다.

 

 

박현우(lqez)님이 2007-11-09 12:57에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
27117mysql 실행시~ [1]
이지훈
2007-10-29
1954
27116CentOs 4.4에서 mysql 4.0대 버전의 인스톨시 질문입니다. [1]
김영화
2007-10-29
1856
27115C++에서 프로시저 호출하는데 에러가... 도움 주세요
사슴
2007-10-29
2452
27114질문 하나 드리겠습니다. [1]
김민균
2007-10-29
2366
27113select로 컬럼의 존재 여부를 알수있을까요?
임시손님
2007-10-29
1861
27110DB 이전에 관해 조언 부탁드립니다. [1]
Fokies
2007-10-26
2079
27109레코드 그룹지어서 문자열 연결하기 [2]
정왕균
2007-10-25
3369
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다