【发布时间】:2021-06-27 18:59:10
【问题描述】:
这是我对这个网站的第一个问题,如果我使用了错误的关键字,我很抱歉。几天来我一直遇到一个问题。
问题是,我有一个名为 property 的 MYSQL 表,我想在其中添加一个 ref 编号,该编号将是一个唯一的 6 位非增量编号,因此我更改表以添加一个名为 property_ref 的新列,该列具有默认值为 1。
ALTER TABLE property ADD uniqueIdentifier INT DEFAULT (1) ;
然后我编写一个脚本首先生成一个数字,然后检查它是否存在,如果不存在,则使用随机数更新行
这是我试过的sn-p,
with cte as (
select subIdentifier, id from (
SELECT id, LPAD(FLOOR(RAND() * (999999 - 100000) + 100000), 6, 0) AS subIdentifier
FROM property as p1
WHERE "subIdentifier" NOT IN (SELECT uniqueIdentifier FROM property as p2)
) as innerTable group by subIdentifier
)
UPDATE property SET uniqueIdentifier = (
select subIdentifier from cte as c where c.id = property.id
) where property.id != ''
这个查询返回几乎所有行的一组记录,但我有一个总共 20000 个条目的表, 但是这个查询填满了 ~19000 并且其余的行都是空的。
这是一个电流输出 [当前结果图片]
如果有人可以提供帮助,我非常感谢。
谢谢
【问题讨论】:
-
我想知道你是否得到空值,因为它两次生成相同的值;在这种情况下,您的更新将不会执行。如果您多次运行更新脚本,相同的行是否总是空白?
-
是的,你没看错。错误在于生成随机数。并非所有记录都是唯一的
标签: mysql sql mysql-workbench mysqldbcompare