sql >> データベース >  >> RDS >> Mysql

MySQLの整数のSELECT範囲。例えば。 1,2,3,4、...、n;

    クエリの問題:

    1. rangeは使用できません WHERE句で。これはエイリアスであり、WHERE句が実行された後にのみ定義されます。
    2. 使用できたとしても、<>を使用して数値を一連の数値と比較することは意味がありません。 。通常、IN(...)を使用できます 、ただし、特定のケースでは、BETWEEN 100000 and 999999を使用する必要があります RANGEの必要性を回避します 関数。
    3. 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ソリューションが存在する可能性がありますが、ランダム結合とモジュラス結合が必要だと思います。



    1. SQL:結果の行を複数回繰り返し、行に番号を付けます

    2. MySQLの結果セットを反復処理するにはどうすればよいですか?

    3. mySQL>>個別のGROUP_CONCATへのHREFリンクの追加

    4. PostgreSQL9.3でのスイッチオーバー/スイッチバックの実装。