Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从现有mysql表列生成1-99之间的数字?_Php_Mysql_Numbers - Fatal编程技术网

Php 如何从现有mysql表列生成1-99之间的数字?

Php 如何从现有mysql表列生成1-99之间的数字?,php,mysql,numbers,Php,Mysql,Numbers,我有这样的mysql db表: id name surname number 1 emil asadi 26 2 anybody anybody 27 我想检查数字列->也就是说,若数字在1-99之间不存在,那个么从1开始生成新的数字。新的数字也应该在1-99之间 如何使用for函数和mysql查询实现这一点?或者你知道其他方法吗?感谢您在adnavce中使用下面的查询,您可以使用单个查询而不是从1开始生成随机数。我认为这无关紧要: SELECT id, name, su

我有这样的mysql db表:

id name    surname number
1  emil    asadi   26
2  anybody anybody 27
我想检查数字列->也就是说,若数字在1-99之间不存在,那个么从1开始生成新的数字。新的数字也应该在1-99之间


如何使用for函数和mysql查询实现这一点?或者你知道其他方法吗?感谢您在adnavce中使用下面的查询,您可以使用单个查询而不是从1开始生成随机数。我认为这无关紧要:

 SELECT id, name, surname,
 if(number between 1 and 99 ,number,floor(1 + rand() * 99)) as number
 FROM table

让我知道这是否与您想要的相同。

您可以使用单个查询生成随机数,而不是使用下面的查询从1开始。我认为这无关紧要:

 SELECT id, name, surname,
 if(number between 1 and 99 ,number,floor(1 + rand() * 99)) as number
 FROM table

让我知道这是否与您想要的相同。

也许可以尝试使用此SQL语句来获取您的数字之间的差距。 如果有间隙,可以在激发UPDATE语句的函数中使用结果

SELECT a.number+1 AS start, MIN(b.number) - 1 AS end
FROM database AS a, database AS b
WHERE a.number < b.number
GROUP BY a.number
HAVING start < MIN(b.number)

也许可以尝试使用此SQL语句来获取数字之间的差距。 如果有间隙,可以在激发UPDATE语句的函数中使用结果

SELECT a.number+1 AS start, MIN(b.number) - 1 AS end
FROM database AS a, database AS b
WHERE a.number < b.number
GROUP BY a.number
HAVING start < MIN(b.number)

但这必须在插入时完成?我的意思是:当您添加一行时,您希望将一个数字[1-99]设置为不存在的列编号?如果所有1-99个数字都存在怎么办?但这必须在插入时完成?我的意思是:当您添加一行时,您希望将一个数字[1-99]设置为不存在的列编号?如果所有1-99个数字都存在怎么办?你是说FLOOR1+RAND*99吗?round1+rand*100生成范围为1-101的数字。是。。两者都会产生相同的结果。FLOOR1+RAND*99给出的数字范围为1-99,而round1+RAND*100给出的数字范围为1-101。否。As四舍五入将进行四舍五入,得到值100。兰特*99可以等于98.99。加1=99.99。然后四舍五入得到100。你是说FLOOR1+RAND*99吗?round1+rand*100生成范围为1-101的数字。是。。两者都会产生相同的结果。FLOOR1+RAND*99给出的数字范围为1-99,而round1+RAND*100给出的数字范围为1-101。否。As四舍五入将进行四舍五入,得到值100。兰特*99可以等于98.99。加1=99.99。然后四舍五入得到100。