クエリの問題:
-
range
は使用できません WHERE句で。これはエイリアスであり、WHERE句が実行された後にのみ定義されます。 - 使用できたとしても、
<>
を使用して数値を一連の数値と比較することは意味がありません。 。通常、IN(...)
を使用できます 、ただし、特定のケースでは、BETWEEN 100000 and 999999
を使用する必要がありますRANGE
の必要性を回避します 関数。 - 1つの数字だけが必要な場合は、ランダムなものではなく、1に制限する必要があります。通常、ランダムなアイテムを選択するには、
ORDER BY RAND()
を使用します 。
このクエリを使用してみてください:
SELECT phoneNum, 100000 as rangeStart, 999999 AS rangeEnd
FROM phone
WHERE phoneNum NOT BETWEEN 100000 AND 999999
ORDER BY RAND()
LIMIT 1
テーブルにない番号を見つけたいが、利用可能な番号が枯渇に近づいていない場合(たとえば、80%未満が割り当てられている場合)、ランダムな番号を生成し、割り当てられていない番号が見つかるまでそれらが割り当てられているかどうかを確認することをお勧めします。 't。
純粋なMySQLソリューションが存在する可能性がありますが、ランダム結合とモジュラス結合が必要だと思います。