【问题标题】:Generate and Insert the five digit random numbers using mysql [duplicate]使用mysql生成并插入五位随机数[重复]
【发布时间】:2014-11-03 12:21:04
【问题描述】:

我想知道是否有任何方法可以生成随机的五位数字并使用 mysql 插入数据库。我知道我可以使用 PHP 做到这一点,但想知道我是否可以摆脱 php 并使用数据库来做到这一点。此外,生成的数字应该不同于已经存储在数据库中的数字。

以下是它的外观示例:

我在random_no field 中有四个常见的模式字母 org1 并想附加其他 5 个随机字母,如下例所示:

+-------+-----------+-----------+--------------------------------------------+
|   id  |   title   |   phone        |         ABN       | Random No        |
+-------+-----------+----------+---------------------------------------------
|   1   |   title1    | 4765 5678   |   214-444-1234    |  org123456        |
|   2   |   title2    | 4444 4444   |   555-111-1234    |  org109876        |
|   3   |   title3    | 3333 3333   |   214-222-1234    |  org187654        |
|   4   |   title4    | 1111 1111   |   817-333-1234    |  org156432        |
|   5   |   title5    | 2222 2222   |   214-555-1234    |  org177654        |
+-------+-----------+-----------+--------------------------------------------

任何帮助将不胜感激。

【问题讨论】:

  • 这篇文章的答案可能是相关的:stackoverflow.com/q/4382185/1144203
  • 你能举个例子吗?例如,桌子有多大?
  • 第一件事看THIS POST我写的如何适当地提出问题
  • 如果您的行变大,您的五个随机数将无法减少
  • 表有 5 个字段,包括我想存储随机生成的数字的这个字段。我有特定的 4 个字母模式,它们将附加到随机生成的数字中,因为我可以区分某些字段。例如:我有 4 个常见的字母,例如 org1,如果我会在 (00001-99999) 之间生成其他 5 个数字,那么它应该看起来像:org122222。

标签: php mysql sql database


【解决方案1】:

现在无法保证不会出现重复...但这是获取两个随机数并将它们乘以不同的数字,因此它们获得随机数的可能性不大

UPDATE table t,
(   SELECT id, LPAD(FLOOR(7 + (RAND() * 50) * (RAND() * 333)), 5, 0) as join_num
    FROM table
)t1
SET t.random_no = CONCAT(t.random_no, t1.join_num)
WHERE t.id = t1.id;

从这里我建议您这样做.. 更新您的表后返回并运行此查询

SELECT id FROM table
GROUP BY random_no
HAVING COUNT(*) > 1;

如果返回任何结果,那么那里的 id 将需要一个不同的随机数,一旦你知道是否有任何重复,你就可以在任何重复的位置更改它

更新查询的细分......

更新表别名 t。
从表中选择 id,然后选择随机数别名 t1。
逐行连接数字和列..
id 相等的地方...为每一行获取不同的数字。

LPAD 是一个零填充,因此如果数字小于 5 个空格,它将用 0 填充,然后您必须使用 FLOOR()RAND() 作为随机数。
希望对您有所帮助!

【讨论】:

  • 感谢您的解决方案,但这对我来说似乎不可行,因为我会在 5 个不同的表中使用此方案,并且所有这些表都会经常更新。因此,我不可能每次都检查表中插入的记录并删除是否有重复。我寻找永久的解决方案。或者,如果我没有找到任何仅使用 mysql 的解决方案,那么我会选择 php,这将非常简单但请求更多。这是我只想使用 mysql 以避免频繁的服务器请求的唯一原因。
  • @RK。如果您要为 5 个表执行此操作......并且需要多次执行,那么您应该考虑设置更新表时的触发器,然后执行类似此查询的操作。 SEE HERE
猜你喜欢
  • 2011-12-10
  • 2012-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多