복붙노트

[SQL] SQLite는 - ORDER BY RAND ()

SQL

SQLite는 - ORDER BY RAND ()

MySQL의에서 나는 RAND () 함수를 사용하여, SQLite는 3 어떤 대안이 있는가?

해결법

  1. ==============================

    1.) (임의 사용 :

    ) (임의 사용 :

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

    (QOP에 의해) 편집 : SQLite는 Autoincremented 열 상태에있는 문서 이후 그 :

    당신이 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에 대한 모든 별칭이다.

  2. ==============================

    2.

    SELECT * FROM table ORDER BY RANDOM() LIMIT 1;
    
  3. ==============================

    3.해결 :

    해결 :

    SELECT * FROM table ORDER BY RANDOM() LIMIT 1;
    
  4. ==============================

    4.훨씬 더 나은 성능을 위해 SQLite는이를 사용 :

    훨씬 더 나은 성능을 위해 SQLite는이를 사용 :

    SELECT * FROM table WHERE id IN (SELECT id FROM table ORDER BY RANDOM() LIMIT x) 
    

    이것은 또한 MySQL을 적용 할 수있다. 이 빠르게 실행 SQL 엔진 첫 번째로드 정렬 그들, 여기에 우리가 행의 id 필드를로드하고 무작위 분류 한 후 메모리에 행 필드를 예상하기 때문에, 그럼 우리는 그들의 X를 얻고, 것입니다 이러한 X ID의 전체 행을 찾을 수 기본 색인.

  5. from https://stackoverflow.com/questions/1253561/sqlite-order-by-rand by cc-by-sa and MIT license