php - 使用格式获取mysql表中唯一的随机数

标签 php mysql

我正在尝试生成一个随机的 4 位数字,该数字不在数据库中的 mysql 表中。我用过这个:

$res = mysqli_query($conn, "SELECT FLOOR(RAND() * 9999) AS random FROM table WHERE 'random' NOT IN (SELECT v_code FROM table) LIMIT 1");
if($res->num_rows>0){
    while($row = $res->fetch_assoc()){
        echo $row['random'];
    }
}

这很好,可以生成唯一的随机数,但我表中 v_code 列中的值采用以下格式:20171234。它以 2017 作为前缀。我的问题是如何搜索该格式的随机数?另外,我希望该随机数有前导零。例如0123、0321、0432 等 最终要搜索的号码采用以下格式:例如20170123 或 20171234,因为这是数据库表中 v_code 列的格式。请帮我解决这个问题。谢谢。

最佳答案

你可以用 NOT LIKE IN 来做到这一点

$res = mysqli_query($conn, "SELECT FLOOR(RAND() * 9999) AS random FROM table WHERE 'random' NOT LIKE IN (SELECT v_code & '%' FROM table) LIMIT 1");
if($res->num_rows>0){
    while($row = $res->fetch_assoc()){
        echo $row['random'];
    }
}

或者 REGEXP 可能更有效

 $res = mysqli_query($conn, "SELECT FLOOR(RAND() * 9999) AS random FROM table WHERE 'random' REGEXP (SELECT v_code & '%' FROM table) LIMIT 1");

关于php - 使用格式获取mysql表中唯一的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45450960/

相关文章:

mysql - 以下查询没有给我预期的结果,请帮助我

Mysql - 根据两列 : discounted_price and price 订购产品表

mysql - 如何修改这个mysql查询以显示获胜百分比?

php - 过滤成员(member)计划标题和标签

HTML列表结构中的PHP递归菜单

PHP if 语句 - 资源 ID 问题

mysql - 如何正确截断表格?

mysql - 通过 SQL 中的另一个列值更新列值

php - 将 mysql_fetch_object() 的结果传递给函数不起作用

javascript - 如何让Flowplayer支持时间栏搜索?