SELECT UUID() a, UUID() b; 这样两个UUID生成的值不一样,怎么让b的值和a生成的id保持一致?

关于mysql生成id我想到了使用UUID(),id是生成了,但是我的b字段也需要这个uuid值,那我应该如何去获取?

img


这里可以看到,两个uuid是不一样的。
然后我想到定义变量的方式去取,例如这样

img


这样确实取到了,但是如果查询语句涉及到GROUP BY,那值就有错误了

img


那我的b字段该怎么去获取id值呢?

使用with as语句,将生成的一个UUID放入临时表,然后查这个临时表,字段查2次,第2次给别名b:

with t as (select uuid() a)
select a, a b from t

也可简化为

select a, a b from (select uuid() a) t

img

那就先生成a的uuid,再更新b的uuid字段