我有一个包含导入数据的~ 80 k行的表。表格结构如下:
order_line_items
- id
- order_id
- product_id
- quantity
- price
- uuid
在导入时,导入了order_id、product_id、quantity和price,但uuid字段保留为null。
有没有一种方法,使用mysql的UUID()函数,批量添加一个uuid到表的每一行?我可以使用脚本来循环遍历每一行并更新它,但如果有MySQL解决方案,那将是最快的。
2条答案
按热度按时间lnlaulya1#
每次调用
uuid()
都会返回一个不同的唯一值。所以一个简单
应该为每个
uuid
字段分配一个唯一值。编辑2022年3月
请注意,使用此方法时,uuid中只有几个字符发生了变化,这使得它们看起来完全相同,但实际上它们都是不同的。
通过@RickJames(见评论),我们试图理解一些人在运行上面的
Update
命令后如何获得相同的UUID(它们应该都不同)。1.执行如下所示的
Update
,UUID()
是一个MySQL函数(因此是()
)1.检查接收更新的字段,它必须足够大以容纳
36
字符另请参见DBA SE上的related question。
ht4b089n2#
根据我自己的测试,它只改变了前8个字符。这意味着大约有40亿个不同的值(16 ^ 8)。如果我有一个大表,假设有1000万个条目,这意味着我有一个碰撞的概率为~ 1:400,真的这个uuid生成并不值钱。在这种情况下,你真的有一个大表与数百万的数据。因此,当这个函数很方便的时候,你应该在mysql之外生成uuid。