0

2つの異なるフィールドで一意である必要があるrand(100001, 1000000)ランダムnoを生成する必要があるランダム関数を実行したいと思います。s

それを明確に説明するためにA、ステータスのあるレコードを持つテーブルと、ステータスSubmittedのあるレコードのみを持つテーブルという2つのテーブルがあります。ApprovedBRejected

私はacknoテーブルAとテーブルで呼ばれるフィールドを持ってBいますが、両方のテーブルフィールドと比較してランダムで一意である必要があります。

これは可能ですか?誰かが解決策を与えることができますか?

4

1 に答える 1

0

乱数は一意ではありません。この場合、999.999 個の数字があり、レコードの数に基づいて、2 つの数字が同じである確率を計算できます。

一意の値を確保する方法は 2 つあります。

まず、使用できますautoincrementtable A1 からtable B始めて、1.000.000から始めましょう。table A行数が 100 万行未満であれば問題ありません。

2 つ目は、 を使用することuuidです。UUID は、aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee 形式の 5 つの 16 進数の utf8 文字列で表される 128 ビットの数値です。

どちらの方法も推測可能な値を提供することに注意してください。それが問題になる場合は、次のように乱数を追加してエンコードできます。

SELECT SHA2(CONCAT(UUID(), RAND()), 256);
于 2013-01-21T09:10:33.800 に答える