如何为 MySQL 查询中的所有记录生成唯一的 UUID?
How can I generate a unique UUID for all my records on a MySQL query?
我有一个非常简单的 MySQL table 我正在查询。但是,我想 return 为查询中的每个结果行生成 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?
当我 运行 你在 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
我有一个非常简单的 MySQL table 我正在查询。但是,我想 return 为查询中的每个结果行生成 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?
当我 运行 你在 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