SQLite - ORDER BY RAND()
2023-09-24 10:12:52
質問
MySQLではRAND()関数が使えますが、SQLite 3では何か代替手段がありますか?
どのように解決するのですか?
を使って ランダム() :
SELECT foo FROM bar
WHERE id >= (abs(random()) % (SELECT max(id) FROM bar))
LIMIT 1;
EDIT (by QOP)です。 のドキュメントにあるように SQLite オートインクリメント edカラムのドキュメントにはこう書かれています。
上で説明した通常のROWID選択アルゴリズム は 単調増加するユニークなROWIDを生成します。 を生成します。 ROWIDの最大値を使用せず、テーブル内の最大のROWIDを持つエントリを削除しない限り、一意のROWIDを生成します。 を削除しない限り、一意なROWIDを生成します。 行を削除した場合、以前に削除された行のROWIDは、新しい行を作成する際に再利用されるかもしれません。 新しい行を作成する際に、以前削除した行のROWIDが再利用されるかもしれません。 .
上記は、もしあなたが
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 のエイリアスです。
関連
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] ...値に挿入する ( SELECT ... FROM ... )
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] ブーリアン値を格納するために使用するMySQLデータ型
-
[解決済み] ATTACHで開いたSQLiteデータベースファイルのテーブルを一覧表示するにはどうすればよいですか?
-
[解決済み] AndroidでSQLiteを使用する際に、並行処理の問題を回避するにはどうすればよいですか?
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] SQL Server : 列を行に変換する
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] テーブルネーミングのジレンマ:単数形と複数形の名前【非公開
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] SQLのIN句をパラメータ化する
-
[解決済み] 項目xにアクセスできるように文字列を分割するにはどうすればよいですか?
-
[解決済み] SQLのインデックスとは何ですか?
-
[解決済み] SQL ServerでINSERT INTOとしてデータをエクスポートする