如何为MySQL查询中的所有记录生成唯一的UUID?

我正在查询一个非常简单的 MySQL 表。但是,我想为查询中的每个结果行返回一个生成的 UUID

我正在运行SELECT语句:

SELECT REPLACE(UUID(),'-','') as id,employee_id,store_id FROM employee_store;

我正在看到结果:

id                                 employee_id  store_id
617de8d416e711ea91c552540047b61e   123          4
617de8d416e711ea91c552540047b61e   134          3
617de8d416e711ea91c552540047b61e   43           3
617de8d416e711ea91c552540047b61e   333          1
617de8d416e711ea91c552540047b61e   544          2

我希望所有id字段都不同。

如何执行SELECT并让查询为每个结果行生成唯一的UUID?

iy5678 回答:如何为MySQL查询中的所有记录生成唯一的UUID?

当我在 this MySQL 5.7 DB Fiddle 中运行查询时,它会给我:

id                               | employee_id | store_id
:------------------------------- | ----------: | -------:
c6c54bdd16e911ea976c00163ec888bf |         123 |        4
c6c54c1e16e911ea976c00163ec888bf |         134 |        3
c6c54c3116e911ea976c00163ec888bf |          43 |        3
c6c54c3f16e911ea976c00163ec888bf |         333 |        1
c6c54c4c16e911ea976c00163ec888bf |         544 |        2

如果仔细查看结果,您会发现UUID不同。检查前8个字符时更容易看到

c6c54bdd
c6c54c1e
c6c54c31
c6c54c3f
c6c54c4c

在MySQL 5.6和8.0中运行相同的查询,我还得到了UUID,它们略有不同。因此,我假设您确实获得了相同类型的结果(与示例数据中显示的结果不同)。

如果要生成明显不同的id,可以按如下所示对其进行哈希处理:

SELECT REPLACE(MD5(UUID()),'-','') as id,employee_id,store_id FROM employee_store;
id                               | employee_id | store_id
:------------------------------- | ----------: | -------:
e1ae8f1d052c0132d1c111d221acd464 |         123 |        4
91ea4f39657204a4c53ed9f1da53c89b |         134 |        3
9b66fe7957723cf1f581b81d892e798e |          43 |        3
a1240b02775fcc3fca0e1739a27a39fe |         333 |        1
8672b220f28050f9c8680248ded4ccd4 |         544 |        2
本文链接:https://www.f2er.com/2974080.html

大家都在问