mysql - MySQL中列之间的随机引用
问题描述
我想在 MySQL 中随机化一个组成的数据集。数据如下所示:
|---------|--------|
|Column 1 |Column 2|
|---------|--------|
| A | 1 |
|---------|--------|
| B | 2 |
|---------|--------|
| C | 3 |
|---------|--------|
...在洗牌后应该是这样的:
|---------|--------|
|Column 1 |Column 2|
|---------|--------|
| C | 2 |
|---------|--------|
| A | 3 |
|---------|--------|
| B | 1 |
|---------|--------|
是否有一个简单的功能可以做到这一点?仅找到 RAND(),但在这种情况下,使用现有(“真实”)引用以随机顺序选择它们是不够的。
提前致谢!
解决方案
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)
每列值分别随机枚举,然后通过这些随机数将值组合成对。
推荐阅读
- c++ - g++ 和 clang++ 对类/方法可变参数模板类型的不同行为
- ruby-on-rails - Rails 成员路径前缀在更改路由后未更新
- java - 抽象父类调用派生类方法
- android - 如何在移动和nodejs一起使用的应用程序中使用linkedin登录
- axon - 多实体聚合命令处理
- regex - 如何查找以“/”开头并包含“php”的 URL?
- javascript - 不可见的字符导致意外的 EOF 错误
- scala - Spark Scala - 批量并行处理不同的子数据帧
- android - Android mkdir() 无法在可移动微型 SD 卡的根目录中创建文件夹
- python - 如何从列表中选择一个值窗口?