본문 바로가기
MySql

MySQL SQLite-ORDER BY RAND ()

by 베이스 공부 2021. 1. 27.
반응형

MySQL에서는 RAND () 함수를 사용할 수 있습니다. SQLite 3에 대안이 있습니까?

 

해결 방법

 


SELECT foo FROM bar
  WHERE id >= (abs(random()) % (SELECT max(id) FROM bar))
  LIMIT 1;


위에서 설명한 일반 ROWID 선택 알고리즘은 monotonically increasing unique ROWIDs as long as you never use the maximum ROWID value and you never delete the entry in the table with the largest ROWID. If you ever delete rows, then ROWIDs from 이전에 삭제 된 행은 새 행을 만들 때 재사용 될 수 있습니다 .

위의 내용은 INTEGER PRIMARY KEY AUTOINCREMENT 열이없는 경우에만 해당됩니다 ( INTEGER PRIMARY KEY 열에서는 여전히 잘 작동합니다). 어쨌든 이것은 더 이식 가능하고 신뢰할 수 있어야합니다.

SELECT foo FROM bar
  WHERE _ROWID_ >= (abs(random()) % (SELECT max(_ROWID_) FROM bar))
LIMIT 1;

ROWID , _ROWID _ OID 는 모두 SQLite 내부 행 ID의 별칭입니다.

 

참조 페이지 https://stackoverflow.com/questions/1253561

 

 

반응형

댓글