在行之间随机排列一列

2024-06-22

如何有效地洗牌大型(1m 到 5m 记录)表的内容?已知该列具有唯一值,但您可以假设为此目的删除了所有约束。我的头痛主要是因为我正在更新我选择的同一列。我的目标是使用 PL/SQL 来完成此操作,以便我可以以编程方式执行其他操作,例如记录或更新其他表。

**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    |
+----+-----------+

我最近的尝试是创建一个使用的游标over (order by dbms_random.value)并尝试基于 rownum 进行合并或更新。也许我可以通过创建某种临时表来绕过修改自我约束?我相当有信心 Oracle 有一些奇特的方法来做到这一点,但我的 SQL 能力仅限于基本的 CRUD 命令。

完整的解决方案在这里,基于戈登的回答:

merge into t
using (
select t.id, t2.name
from (select t.*, rownum as seqnum
      from t
     ) t join
     (select t.*, row_number() over (order by dbms_random.value) as seqnum
      from t
     ) t2
     on t.seqnum = t2.seqnum
) src
on (t.id = src.id)
when matched then update set t.name = src.name;

您可以使用随机行号进行自连接:

select t.id, t2.name
from (select t.*, row_number() over (order by dbms_random.value) as seqnum
      from t
     ) t join
     (select t.*, row_number() over (order by dbms_random.value) as seqnum
      from t
     ) t2
     on t.seqnum = t2.seqnum;

实际上,您不需要将两者都随机化:

select t.id, t2.name
from (select t.*, rownum as seqnum
      from t
     ) t join
     (select t.*, row_number() over (order by dbms_random.value) as seqnum
      from t
     ) t2
     on t.seqnum = t2.seqnum;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在行之间随机排列一列 的相关文章

  • 如何处理 AWS Redshift unload 命令中的带引号的值?

    假设 遵循AWS docs https docs aws amazon com redshift latest dg r UNLOAD command examples html我想使用像这样的卸载命令 unload SELECT FROM
  • 声明日期,然后添加下一个工作日

    我没有得到我需要的结果 我想做的就是声明我的日期 然后添加下一个工作日 IE CASHDATE 1 这有效 但我需要下一个工作日是 5 号 DECLARE CASHDATE DATETIME SET CASHDATE 2016 12 02
  • ORACLE 更新并返回 OLD 和 NEW 值

    PL SQL Oracle 12c 中是否有与此 T SQL 查询等效的内容 UPDATE A SET A columnA 10 WHERE A columnB lt 30 OUTPUT INSERTED DELETED 查询更新表A 同时
  • ORA-01719: OR 或 IN 的操作数中不允许有外连接运算符 (+)

    运行查询时出现错误 ORA 01719 OR 或 IN 的操作数中不允许有外连接运算符 01719 00000 OR 或 IN 的操作数中不允许使用外连接运算符 原因 or 子句中出现外连接 动作 如果A和B是谓词 要得到 A 或B 的效果
  • 如何在PostgreSQL中选择具有级别的表的所有层次结构

    我现在有一个问题 我有一个名为地方的表 其结构如下 id 父 ID name 我想做一个选择来拥有该表的所有层次结构 有一个数据的小例子 1 null 123 Barclay St 2 1 Floor 1 3 1 Floor 2 4 1 F
  • 在sql中运行累积返回

    希望获得一系列每日收益的连续累积收益 我知道这可以使用 exp 和 sum 来解决 但我的返回序列不是使用 LN 计算的 希望在不使用循环的情况下解决这个问题 因为它们在 sql 中效率非常低 让它跑得快很重要 Dataset 期望的结果
  • Python postgreSQL sqlalchemy 查询 DATERANGE 列

    我有一个预订系统 并将预订日期范围保存在 日期范围 列中 booked date Column DATERANGE nullable False 我已经知道我可以通过以下方式访问实际日期booked date lower or booked
  • SQL Server 2008插入优化

    我必须将大量行 超过 1 000 000 000 插入到 SQL Server 数据库中 该表有一个 AI Id 两个 varchar 80 列和一个以 GETDATE 作为默认值的小日期时间 最后一项只是为了听觉 但却是必要的 我想知道插
  • 根据多列删除重复项

    我使用以下内容列出了重复项 select s MessageId t from Message s join select ToUserId FromUserId count as qty from Message group by ToU
  • SQL 用逗号替换点

    我有以下代码 SELECT cast Listenpreis 1 19 as decimal 29 2 as Listenpreis FROM SL M03KNE dbo ARKALK 我得到这个值 5 59 我尝试将点替换为 komma
  • 编写 MySQL 查询以获得所需结果

    我正在使用 MySQL 数据库 风险因素有四种类型 严重 高 中 低 表包含如下数据 id uaid attribute value time risk factor 1 1234 Edge Exist 16123 NONE 2 1234
  • Sql查询增加多个项目的项目价值价格

    我想编写 Sql 查询来按百分比增加商品价格 场景是 在表中 我有 3 列 ID 商品名称 价格 Example If item Name is T shirt Increase price by 10 item Name is Jins
  • Sql Server 2008 强制日期从 dd/MM/yyyy 到 MM/dd/yyyy

    我在 sql server 2008 上遇到了一个奇怪的问题 我试图用dd MM yyyy格式写入sql server 2008 但是插入日期后它会自动转换为MM dd yyyy 注意 我的电脑时钟格式是dd MM yyyy 我的报告查看器
  • ISDATE 相当于 DB2

    我有一个包含字符格式日期的表 我想检查日期的格式 请让我知道如何在 DB2 中做到这一点 我知道有一个函数 ISDATE 但它在 DB2 中不起作用 我在 AS400 上使用 db2 作为日期基础 请帮助我 实际上 看起来 DB2 for
  • 当 COUNT(*) 为 NULL 时,GROUP BY 返回 0

    这是我原来的查询 SELECT CAST IndexedDate as varchar COUNT AS Logins FROM Table WHERE EventType Login AND IndexedDate gt DATEADD
  • INSERT INTO 存储过程的输出

    我正在编写一个存储过程 首先在表中插入一个新行 然后 另一个查询需要此查询生成的 ID 是否可以使用 OUTPUT 访问预先生成的 ID 这就是我到目前为止所做的 这几乎是一个猜测 但没有成功 ALTER PROCEDURE dbo add
  • 物化视图快速刷新-更新基表时插入和删除

    大家好 Stackoverflowers 的朋友们 TLDR MVIEW 是否使用UPDATE or DELETE INSERT刷新期间 前一段时间 当我在 Oracle 中摆弄物化视图时 遇到了一件晦涩难懂的事情 这是我的例子 2 个基表
  • 即使为空也显示值

    我正在使用以下内容显示过去 7 天内添加的产品计数 即使 COUNT 0 我是否可以以某种方式定制查询以显示过去 7 天的所有产品 查询现状 SELECT DAYNAME dateadded DAY COUNT COUNT FROM pro
  • 通过sql视图向多个表插入数据

    mysql 有没有办法通过视图向多个表插入数据 MySQL 参考手册对于可更新视图是这样说的 一些视图是可更新的 也就是说 您可以在诸如以下的语句中使用它们UPDATE DELETE or INSERT更新基础表的内容 为了使视图可更新 必
  • Python - 将列表作为参数传递给 SQL,以及更多变量

    我试图在 python 3 6 中将未知数量的参数传递给 SQL Server 这是我使用 pypyodbc 的代码 cursor cnxn cursor theargs 1033286869 1053474957 1063654630 1

随机推荐

  • gevent:产生大量小绿芽的缺点是什么?

    根据我在评论中的问题这个答案 https stackoverflow com a 16433061 348501对这个问题 带有嵌套 Web 请求的 Gevent 池 https stackoverflow com q 15322701 3
  • @objc 动态 var 在 Swift 4 中意味着什么

    你能简单解释一下什么吗 objc and dynamic在 Swift 4 中使用 Xcode 9 x 意味着什么 通过尝试 错误以及 stackoverflow 中的后续文章 我最终实现了此代码片段的工作 但我想了解一些关于这些神奇关键字
  • 关闭连接时 JDBC 事务回滚失败

    如果在提交期间与数据库资源的连接丢失 这可能会导致提交失败 然后回滚失败 是否有可能事务已部分提交 这似乎发生在我的案例中 但希望社区能更清楚地说明这一点 HibernateTransactionManager 和 Oracle 与 JDB
  • NSSortDescriptor 和 nil 值

    我正在使用 NSSortDescriptor 按升序对 NSDate 对象进行排序 但是 我需要将零日期放在列表的底部 而目前它们位于列表的顶部 最后 我决定拥有 nil 值不是一个好主意 如果我希望 nil 值出现在升序列表的底部 我应该
  • React Native:在子组件上使用展开运算符时,将样式作为道具传递的正确方法是什么

    这是我的A组份 const GenericTextInput props gt return
  • 如何将文本日志文件导入 Excel 列

    我有一些表格数据 39645961 79966658 358920045121212 0 75 2013 01 30 20 47 52 39646124 79966771 358920045121212 0 5 2013 01 30 20
  • 使用字符串文字处理 char * initd 时崩溃,但使用 malloc 则不会崩溃

    今天我在读一本关于C的书 其中提到以下内容是正确的 我很好奇为什么要做这个程序来验证 然后最终将其发布在这里 以便比我聪明的人可以教我为什么这两种情况在运行时不同 与差异相关的问题的具体情况在运行时根据 char 是否指向作为文字创建的字符
  • 防止主体滚动但允许覆盖滚动

    我一直在寻找一种 灯箱 类型的解决方案来实现这一点 但尚未找到 如果您知道的话 请提出建议 我试图重现的行为就像你看到的那样兴趣 http www pinterest com单击图像时 覆盖层是可滚动的 就像整个覆盖层向上移动一样 就像一个
  • Microsoft Project VSTO C# - 更改时的事件侦听器

    我遇到了一点麻烦 我正在尝试为 Project 2013 插件编写一个处理程序 以侦听 MS Project 中的单元格中发生的更改 如果单元格发生更改 我想在其中一个隐藏单元格中输入一个标志 有任何想法吗 您需要添加一个事件处理程序 如下
  • 图片URL命名方案

    序言 我正在构建一种 CMS 社交网络服务 它将托管许多图像 我打算使用 Eucalyptus Amazon S3 来存储图像 并且想知道 Tumblr Twitter 等网站使用的看似随机的文件名的重要性 例如 31 media tumb
  • VSCode 集成终端不加载 .bashrc 或 .bash_profile

    我有以下文件来处理 shell 配置 bash profile if f bashrc then source bashrc fi and bashrc configure shell 如果我使用以下命令从命令行打开 VSCodecode
  • 在 Jtable 的一行中设置颜色

    我需要帮助 I have two tables 在指令表中 必须根据流水线阶段中正在执行的指令来突出显示每一行 比如说 在时间t10 I5处于IS阶段 所以指令表中的I5必须突出显示或者必须改变指令表中的行的颜色 比如说 I5行是红色 I6
  • 无法更改 Apps 脚本的云项目

    我们无法再将 Apps 脚本项目与云平台项目关联起来 当在 GAS 编辑器中转到 资源 云平台项目 并输入项目 ID 时 它显示 项目不存在或您需要对其进行编辑访问 该项目确实存在 并且同一个 Google 帐户是它的所有者 通过相同的工作
  • 使用另一个 typedef 类型转换变量

    typedef struct unsigned char a unsigned char b unsigned char c type a typedef struct unsigned char e unsigned char f 2 t
  • Rails 3.0 中的 f.error_messages

    Rails 3 0 已弃用f error messages现在需要一个插件才能正常工作 然而我想学习如何以 新的 本机方式显示错误消息 我正在关注入门指南 http edgeguides rubyonrails org getting st
  • C# 中包含表的消息框

    IEnumerable
  • 在全局目录中验证用户身份

    我需要在给定用户 ID 域和密码的情况下验证用户的 Windows 凭据 我们的 Active Directory 包含多个域 我们可以使用以下代码列出其中一些域 var domains System DirectoryServices A
  • 如何增加 phpMyAdmin 中的导入大小限制

    有谁知道是否或如何可以增加phpMyAdmin 中的导入大小限制 目前我的服务器限制为 50MB 请注意 这与upload max filesize在 php ini 中 该值设置为 2MB 我需要将一张表导入到我的一个数据库中 而 php
  • python:转义XML中的非ascii字符

    我使用以下源文件打印了测试 XML 文件 但它无法正确处理非 ASCII 字符 xmltest py import xml sax xmlreader import xml sax saxutils def testJunk file e2
  • 在行之间随机排列一列

    如何有效地洗牌大型 1m 到 5m 记录 表的内容 已知该列具有唯一值 但您可以假设为此目的删除了所有约束 我的头痛主要是因为我正在更新我选择的同一列 我的目标是使用 PL SQL 来完成此操作 以便我可以以编程方式执行其他操作 例如记录或