SELECT *
FROM X
WHERE flags = 0
ORDER BY rand()
LIMIT 1
これにより、ランダムな行が1つ取得されます。 1をNに置き換えて、N個のランダムな行を取得します。
警告:他の人が指摘しているように、これは全表スキャンが必要なため、遅くなる可能性があります。私はこれをDB2で行っていました。これは、数十万行のテーブルで完全に機能しましたが、テレシュコの答え 、MySQLははるかに速く劣化するようです。
SELECT *
FROM X
WHERE flags = 0
ORDER BY rand()
LIMIT 1
これにより、ランダムな行が1つ取得されます。 1をNに置き換えて、N個のランダムな行を取得します。
警告:他の人が指摘しているように、これは全表スキャンが必要なため、遅くなる可能性があります。私はこれをDB2で行っていました。これは、数十万行のテーブルで完全に機能しましたが、テレシュコの答え 、MySQLははるかに速く劣化するようです。