mysql 随机生成不重复的数字

在用户表的 username 生成8位不重复的数字

mysql

SELECT FLOOR(RAND() * 999999999) AS random_num
FROM user 
WHERE "random_num" NOT IN (SELECT username FROM user)
LIMIT 1

用laravel实现

UserModel.php

use Illuminate\Database\Query\Expression;
$user = new User();
$res = $user->selectRaw("FLOOR(RAND() * 999999999) AS random_num")
        ->whereNotIn(new Expression('"random_num"'), $user->select('username'))->value('random_num');

返回

float(随机8位数字)