MySQL中列之间的随机引用



我想在MySQL中随机化一个组成的数据集。数据如下:

|---------|--------|
|Column 1 |Column 2|
|---------|--------|
|   A     |   1    |
|---------|--------|
|   B     |   2    |
|---------|--------|
|   C     |   3    |
|---------|--------|

并且在Shuffling之后应该是这样的:

|---------|--------|
|Column 1 |Column 2|
|---------|--------|
|   C     |   2    |
|---------|--------|
|   A     |   3    |
|---------|--------|
|   B     |   1    |
|---------|--------|

有没有一个简单的函数可以做到这一点?只找到RAND((,但在这种情况下,用现有的("Real"(引用按随机顺序选择它们是不够的。

提前感谢!

WITH 
cte1 AS ( SELECT column1, ROW_NUMBER() OVER (ORDER BY RAND()) rn FROM src_table ),
cte2 AS ( SELECT column2, ROW_NUMBER() OVER (ORDER BY RAND()) rn FROM src_table )
SELECT cte1.column1, cte2.column2
FROM cte1
JOIN cte2 USING (rn)

小提琴

每个列的值都是单独随机枚举的,然后通过这些随机数将这些值重新组合成对。

最新更新