如何在MySql中打乱列

2024-01-12

在找不到任何符合我需求的内容后,我编写了这段代码来一致地对 mysql 中列的值进行洗牌。有一个更好的方法吗?

**Original table:**
+----+-----------+
| id | fname     |
+----+-----------+
|  1 | mike      |
|  2 | ricky     |
|  3 | jane      |
|  4 | august    |
|  6 | dave      |
|  9 | Jérôme    |
+----+-----------+

**Possible output:**
+----+-----------+
| id | fname     |
+----+-----------+
|  1 | dave      |
|  2 | jane      |
|  3 | mike      |
|  4 | ricky     |
|  6 | Jérôme    |
|  9 | august    |
+----+-----------+

DROP TEMPORARY TABLE IF EXISTS shuffle1;
DROP TEMPORARY TABLE IF EXISTS shuffle2;
CREATE TEMPORARY TABLE shuffle1 (id int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), original_values varchar(255), key original_values(original_values) );
CREATE TEMPORARY TABLE shuffle2 (id int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), original_ids int(11), key original_ids(original_ids) );
INSERT INTO shuffle1 (id, original_values) SELECT NULL, table1.fname FROM table1 ORDER BY rand();
INSERT INTO shuffle2 (id, original_ids) SELECT NULL, table1.id FROM table1;
UPDATE table1 SET table1.fname = (SELECT shuffle1.original_values FROM shuffle1 JOIN shuffle2 ON shuffle2.id = shuffle1.id WHERE table1.id = shuffle2.original_ids);

如果你不介意周围部分表数据无法处理(取决于表大小,预计有 50% 的行无法处理),这是一个解决方案:

原表

id  name
1   Some
2   Body
3   Once
4   Told
5   Me
6   The
7   World
8   Is
9   Gonna
10  Roll
11  Me
12  I 
13  Ain't
14  The 
15  Shapest
16  Tool
17  In
18  The
19  Shed
20  She
21  was
22  looking
23  kind
24  of
25  dumb
26  with
27  her
28  finger
29  and
30  her
31  thumb

Query:

SELECT new_id, name FROM (
    SELECT  new_id, name FROM (
        SELECT new_meme.id as new_id, original_meme.id as original_id, original_meme.name FROM meme original_meme
        JOIN meme new_meme ON new_meme.id <>  original_meme.id
        ORDER BY RAND()
    ) layer1
    GROUP BY layer1.new_id
) layer2 GROUP BY name

结果(当然每次运行都不同)

1   I 
2   In
3   Gonna
4   Ain't
5   The
6   her
7   finger
8   Some
9   dumb
10  She
15  Me
16  with
17  Told
18  and
19  World
21  Roll
22  The 
25  Tool
26  Shed
27  Is
28  Me
29  Sharpest
31  The

注意:您可能会发现查询非常慢, 这是因为它加入表两次,所以如果数据大小为1000,则需要处理1000 * 1000。

您可以通过更改来控制查询速度ON new_meme.id <> original_meme.id to ON new_meme.id BETWEEN original_meme.id - 5 AND original_meme.id +5(5可以改变),但它会降低随机性并且不适用于非数字id

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在MySql中打乱列 的相关文章

  • java.sql.SQLException:已经关闭

    我们有一个在 Tomcat 上运行的 Web 应用程序 带有 MySQL 后端 有一段时间一切都很好 然后突然我们开始遇到这个异常java sql SQLException Already closed 整个堆栈跟踪是 DEBUG org
  • 使用 MySQL 触发器将所有表更改记录到辅助表

    我有一张桌子 CREATE TABLE data table data id INT NOT NULL AUTO INCREMENT PRIMARY KEY field1 INT NOT NULL field2 INT NOT NULL f
  • MySQL 可以存储多少行?

    所以我是一个初学者 刚刚自学了几个月的MySQL 我在工作中总是使用 phpMyAdmin 我过去的工作只涉及大约 100k 行的表 所以没有什么大问题 然而 我的客户现在想要在表中存储大约 800 万行 MySQL phpMyAdmin
  • 如何在 BigQuery/SQL 中将行转置为包含大量数据的列?

    我在将 BigQuery 中的大量数据表 15 亿行 从行转置为列时遇到问题 我可以弄清楚如何在硬编码时使用少量数据来完成此操作 但是对于如此大量的数据 该表的快照如下所示 CustomerID Feature Value 1 A123 3
  • 当子查询具有组列时,MySQL 8 不使用 INDEX

    我们刚刚从 mariadb 5 5 迁移到 MySQL 8 一些更新查询突然变得很慢 经过更多调查 我们发现当子查询有组列时 MySQL 8不使用索引 例如 下面是一个示例数据库 桌子users维护每种类型用户的当前余额 表 帐户 维护每天
  • 如何随机打乱地图中的值?

    我有一个 std map 其中键和值均为整数 现在我想随机打乱地图 因此键随机指向不同的值 我尝试了 random shuffle 但它无法编译 请注意 我并没有尝试洗牌键 这对于地图来说没有意义 我正在尝试随机化这些值 我可以将这些值推入
  • 如何使用Python的Mysqldb模块?而不是 %s 作为查询参数?

    MySqlDb 是一个很棒的 Python 模块 但有一个部分非常烦人 查询参数如下所示 cursor execute select from Books where isbn s isbn 而已知宇宙中的其他地方 oracle sqlse
  • 在关系数据库中存储 1:1 用户关系的最佳方式

    存储用户关系的最佳方式是什么 例如友谊 在关系中必须是双向的 你是我的朋友 因此我是你的朋友 数据库 例如MYSql 我可以想到两种方法 每当一个用户与另一个用户成为好友时 我都会向数据库添加两行 其中 A 行由发起用户的用户 ID 和下一
  • Node.js 将 async/await 与 mysql 一起使用

    我一直在尝试在节点中将 async await 与 MySQL 一起使用 但它每次都会返回一个未定义的值 有理由吗 请在下面找到我的代码 const mysql require promise mysql var connection co
  • Sails 嵌套模型集合

    我有 3 个型号 用户模型 module exports schema true attributes login type string required true hosts collection host via owners acc
  • PHP 和 MySql 检查表是否为空

    我有点菜鸟 而且我很难过 我需要一些代码来搜索数据库表以查找与 id 变量匹配的行 我需要抓取该表 描述 中的一个字段 如果它为空 我需要显示一条消息 如果不是另一条消息 这是我的代码 我知道我需要添加 mysqli 转义字符串 只需从内存
  • mysql 无法向用户授予权限,出现错误:ERROR 1819 (HY000): 您的密码不满足当前策略要求

    我正在将一个新应用程序迁移到包含 MySQL 数据库的生产环境 尝试使用以下命令授予所需权限时 GRANT ALTER CREATE ON MyDB to ThisUser 我收到错误 ERROR 1819 HY000 Your passw
  • 如何从 mysql 数据库中提取数据并使用 D3.JS 进行可视化?

    我有一个数据库MySQL我想在其中可视化D3 JS 为了做到这一点 首先我想parse中的数据JSON格式 然后编写一个基本代码 从数据库中提取数据并使用D3 JS 我环顾四周 但找不到我想要的东西 因为我是新手D3 JS 我怎样才能做到这
  • PDO 和 MySQL 全文搜索

    我正在将所有站点代码从使用 mysql 函数转换为 PDO 关于 PDO 的 PHP 文档对于我的需求来说并不清楚 它为您提供了可以使用的功能 但没有详细解释它们在不同场景下的情况 基本上 我有一个 mysql 全文搜索 sql SELEC
  • 创建表时 MySQL 语法错误

    我正在尝试在 Filemaker gt MySQL 转换脚本中使用此查询 表创建步骤直接从 phpMyAdmin 导出中获取 并添加到 DROP 语句中 DROP TABLE IF EXISTS artifacts CREATE TABLE
  • MySQL 更新具有多个值的查询

    我在数据库中有一个表 其记录如下 match id guess result 125 1 0 130 5 0 233 11 0 125 2 0 我的用户为每场比赛选择一个猜测 我有一个函数可以根据比赛的结果计算猜测的结果 如果猜测正确 结果
  • 使用 Java 连接到 MySql - SSL 连接

    我一直在尝试连接到 MySql 数据库 该数据库使用 ssl 连接与 java 并遇到麻烦 如果任何人可以帮助我 将会有很大的帮助 手动连接MySql 我们使用MySQL Workbench 参数 主机名 test db1 ro xxxxx
  • MySQL 连接最新行

    我有两张桌子agents and calls 座席将始终处于一个活动呼叫中 可能有另一个待处理的呼叫分配给某个座席 而该座席尚未应答 我想编写一个查询来测试最新的调用是否按排序dateCreated与代理表中当前活动的呼叫匹配 以下是当前呼
  • 如何反转散列和加盐密码? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 vBulletin 登录使用它来交叉引用数据库 md5 md5 pass salt 我如何制作一个 PHP 脚本 以便每个密码
  • golang sql 驱动程序的准备语句

    关于golang的sql driver 下面两条语句有什么区别 store DB is sql DB type rows err store DB Query SQL args err nil defer rows Close and st

随机推荐

  • 在 macOS 中通过命令行与 Siri 交互

    我在手机和手表上使用 Siri 随时随地创建提醒 当我在办公室时 我不想使用 Siri 打扰安静 因此我通常使用与 提醒 应用程序集成的 Alfred 工作流程 或者直接使用 提醒 应用程序 然而 两者都有一个相当笨拙的界面 如果我可以在命
  • Zbar SDK - 缺少所需的架构 x86_64

    我在最近的 Xcode 5 1 中构建应用程序时遇到了一个问题 编译失败 并出现 架构 x86 64 的未定义符号 错误 我使用有效架构构建我的项目 armv7 armv7s 和 arm64 切换到最新的环境 Xcode 后 我在相同的架构
  • 随机化一个 BigInteger

    I m looking to randomize a BigInteger The intent is to pick a number from 1 to 8180385048 Though from what I noticed the
  • 运行 gulp 任务时如何解决“在 MakeCallback 中使用域属性已被弃用”警告?

    我正在使用带有 gulp 的节点来运行一些构建任务 直到几天前 这一切都还顺利 现在 我假设在升级 更新后 不确定是哪一个 我相信这是节点从 14 4 更新到 14 5 我不断收到此警告 DEP0097 DeprecationWarning
  • 使用 webpack、Threejs 示例和 TypeScript?

    我在将 Threejs 示例 如 EffectComposer 或 Detector 中的内容与 webpack 和 typescript 一起使用时遇到了很多麻烦 先把相关的 d ts文件全部存在并通过安装tsd 我的问题是让 webpa
  • Oracle:“= ANY()”与“IN ()”

    我刚刚在 ORACLE SQL 中偶然发现了一些我很好奇的东西 不确定其他中是否也有 我在这里作为维基询问 因为很难尝试在谷歌中搜索符号 我刚刚发现 当根据一组值检查一个值时 您可以执行以下操作 WHERE x ANY a b c 与通常的
  • 使用 OData 连接服务在 Blazor 客户端应用程序中使用 OData

    创建了 netstandard2 1 blazor Web 程序集项目 将 Odata Connected Service V 0 10 0 添加到同一项目 生成 OData 代理类 从 Razor 页面的 Task OnInitializ
  • 读取 Amazon Kinesis Firehose 流写入 s3 的数据

    我正在将记录写入 Kinesis Firehose 流 该流最终由 Amazon Kinesis Firehose 写入 S3 文件 我的记录对象看起来像 ItemPurchase String personId String itemId
  • document.execCommand 复制命令不起作用或其他解决方案?

    我正在做的是以编程方式从网页中选择所有文本 然后复制它 选择所有适用于execCommand但复制则不然 这是我的代码 ajax url url val type GET success function res result html r
  • Selenium Web 驱动程序等待很长时间

    我可以长时间等待 Selenium Web Driver 吗 尽管我可以像下面这样设置隐式等待命令 但它不会等待我给出的时间 driver manage timeouts implicitlyWait 5 TimeUnit MINUTES
  • C++/Win32:如何等待挂起的删除完成

    Solved 可行的解决方案 履行机构的答复 https stackoverflow com questions 3764072 c win32 how to wait for a pending delete to complete 37
  • 在 Powershell Cmdlet 中使用 Entity Framework Core?

    是否可以构建一个包含实体框架 Core 或 EF6 的 PowerShell cmdlet 以访问 SQL Server 数据库 我多年来一直在用 C 编写 cmdlet 但在过去的 coupla 日子里 由于似乎是程序集版本冲突 我在尝试
  • 在 C++ 中调用 std::sort 时使用 std::greater 的语法

    推荐的方式 例如 按降序对向量进行排序 https stackoverflow com questions 9025084 sorting a vector in descending order 对容器进行反向排序似乎是 std sort
  • Python,规则网格上的邻居

    假设我有一组 2D 坐标 表示 2D 规则网格的单元中心 我想为网格中的每个单元格找到每个方向上两个最近的邻居 如果分配给每个单元格和索引定义如下 那么问题就非常简单 idx cell idx N idy 其中 N 是网格中单元格的总数 i
  • 用于测试的 Java 编写的嵌入式 Kerberos 服务器

    有谁知道任何嵌入式 Kerberos 服务器 KDC KAdmin 它们是用 Java 编写的 并且可以仅在 JVM 进程中运行 例如 Hadoop minicluster 或嵌入式 LDAP 服务器 我的目标是让人们运行需要 Kerber
  • 当涉及到 pluck 时,to_sql 不起作用

    当我到to sql在以下查询中它工作正常 2 1 8 017 gt Task joins recurrence group recurrences id to sql gt SELECT tasks FROM tasks INNER JOI
  • XSLT:递归映射

    我是 XSLT 转换的新手 并且陷入了这种递归映射的困境
  • 如何强制两个 Java 线程在同一处理器/核心上运行?

    我想要一个不包含关键部分或类似同步替代方案的解决方案 我正在寻找类似于 Windows 中的 Fiber 用户级线程 的东西 操作系统管理哪些线程在哪个核心上处理 您需要将线程分配给操作系统中的单个核心 例如 在 Windows 上 打开任
  • 名词可数性

    有没有关于确定名词可数性的资源 要么用某种方法来解决这个问题 要么用一本字典来记录一个名词是否可数或不可数 我对这个名词是否可数不感兴趣 但更多的是它可能是可数的 例如 rice 可以变成rices 这意味着它可以是可数的 但在大多数情况下
  • 如何在MySql中打乱列

    在找不到任何符合我需求的内容后 我编写了这段代码来一致地对 mysql 中列的值进行洗牌 有一个更好的方法吗 Original table id fname 1 mike 2 ricky 3 jane 4 august 6 dave 9 J