- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已经阅读了一些关于此的帖子,但没有一篇涉及此问题。
我想这是不可能的,但我还是会问。
我有一个包含 50.000 多个寄存器的表。这是一张旧表,其中发生了各种插入/删除操作。
也就是说,大约 300 个寄存器中存在各种“漏洞”。即:..., 1340, 1341, 1660, 1661, 1662,...
问题是。有没有一种简单/容易的方法来让新的插件填补这些“洞”?
最佳答案
我同意@Aaron Digulla 和@Shane N 的观点。这些差距毫无意义。如果他们确实有意义,那就是有缺陷的数据库设计。期间。
话虽如此,如果您绝对需要填补这些漏洞,并且您至少运行 MySQL 3.23,您可以利用 TEMPORARY TABLE 创建一组新的 ID。这里的想法是您将按顺序选择所有当前 ID 到一个临时表中:
CREATE TEMPORARY TABLE NewIDs
(
NewID INT UNSIGNED AUTO INCREMENT,
OldID INT UNSIGNED
)
INSERT INTO NewIDs (OldId)
SELECT
Id
FROM
OldTable
ORDER BY
Id ASC
由于 NewId 列的 AUTO INCREMENT 属性,这将为您提供一个将旧 Id 映射到本质上将是顺序的全新 Id 的表。
完成此操作后,您需要更新对“OldTable”中 Id 的任何其他引用以及它使用的任何外键。为此,您可能需要删除您拥有的任何外键约束,将表中的任何引用从 OldId 更新为 NewId,然后重新建立外键约束。
但是,我认为您不应该这样做任何,只需了解您的 Id 字段的存在仅用于引用记录,并且应该不> 有任何特定的相关性。
更新:添加更新 ID 的示例
例如:
假设您有以下 2 个表架构:
CREATE TABLE Parent
(
ParentId INT UNSIGNED AUTO INCREMENT,
Value INT UNSIGNED,
PRIMARY KEY (ParentId)
)
CREATE TABLE Child
(
ChildId INT UNSIGNED AUTO INCREMENT,
ParentId INT UNSIGNED,
PRIMARY KEY(ChildId),
FOREIGN KEY(ParentId) REFERENCES Parent(ParentId)
)
现在,差距出现在您的父表中。
为了更新您在 Parent 和 Child 中的值,您首先使用映射创建一个临时表:
CREATE TEMPORARY TABLE NewIDs
(
Id INT UNSIGNED AUTO INCREMENT,
ParentID INT UNSIGNED
)
INSERT INTO NewIDs (ParentId)
SELECT
ParentId
FROM
Parent
ORDER BY
ParentId ASC
接下来,我们需要告诉 MySQL 忽略外键约束,这样我们才能正确更新我们的值。我们将使用以下语法:
SET foreign_key_checks = 0;
这会导致 MySQL 在更新值时忽略外键检查,但仍会强制使用正确的值类型(详见 MySQL reference)。
接下来,我们需要使用新值更新父表和子表。我们将为此使用以下 UPDATE 语句:
UPDATE
Parent,
Child,
NewIds
SET
Parent.ParentId = NewIds.Id,
Child.ParentId = NewIds.Id
WHERE
Parent.ParentId = NewIds.ParentId AND
Child.ParentId = NewIds.ParentId
现在,我们已将所有 ParentId 值正确更新为临时表中新的有序 ID。完成后,我们可以重新进行外键检查以保持引用完整性:
SET foreign_key_checks = 1;
最后,我们将删除临时表以清理资源:
DROP TABLE NewIds
就是这样。
关于mysql - 自增字段 "holes"如何填写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1841104/
在 JConsole 的 MBeans 选项卡中查看我的应用程序的 MBean 时,有“属性”和“操作”的子菜单。如果将这些树结构展开到最大程度,然后单击其中一个操作,则右侧面板会显示三个部分:操作调
我有一个包含稀疏数据的人性化工作表: PART | FRUIT --------------- Alpha | | Apples | Pears Beta |
我有一个包含每小时数据的数据框: area date hour output H1 2018-07-01 07:00:00 150 H1
假设我有这样的 html 表: 16 3 2 13 5 10
我已经将一些原始数据导入到 R 中,如下所示: 表 1: ID Year Value 01 1999 25 01 2000 12 01 2002
我已经将一些原始数据导入到 R 中,如下所示: 表 1: ID Year Value 01 1999 25 01 2000 12 01 2002
我在以下问题中遇到了同样的问题: Forward Fill New Row to Account for Missing Dates 不同之处在于,我需要计算两个不同日期之间的小时数差异,例如 201
我想填写 pandas 数据框中缺失的值。最佳情况下,我希望分钟列的范围为每小时 0-60。不幸的是,数据生成过程没有记录任何 sub_count = 0 的行。有办法做到这一点吗?我的数据涵盖日期
基本对象问题我似乎无法全神贯注。我确定我想多了。填写 addFullName 函数的代码。该函数应该: Take one input parameter, a person object. Add a
是否可以在没有用户交互的情况下调用 html 表单提交?我知道可以通过 HttpClient 发出发布请求,但这并不能解决我的问题。 我需要以编程方式在网页上填写一些表单输入字段,然后“单击”提交按钮
Python 的新手,似乎无法找到我正在寻找的确切答案我相信有更简单的方法来填写此信息 我有 df1 和 df2 df1: FirstName LastName PhNo uniqueid df
您好,我有一个需要填写的 PDF 表单。该应用程序向用户(表单)提出问题,提交时应将答案填写到 PDF 空白处以供打印。 我熟悉 JS 和 Node(有一段时间没用过)。不使用 PHP。 我会在我常去
假设我有一个如下所示的数据框: ID DATE VALUE 1 31-01-2006 5 1 28-02-2006 5 1 31
我想做的是,在填写四个字符时指向下一个选项卡。每个字段应有 4 个字符,完成后应移至下一个输入框。 $(".inputs").keyup(function () { if (this
我有 3 个 div,每个都有几个输入字段和下一步按钮。我想编写一个 jQuery 片段,当单击下一个按钮时,它会检查以确保与按钮位于同一 div 内的所有输入字段都不为空。 我已经尝试了以下但没有成
我正在做一个刽子手项目。我已经让大部分代码正常工作了。 我无法工作的部分是“ secret 单词”有多个相同的字母。例如“hello”有 2 个“l”。 这是代码部分的代码,如果猜测正确,它将“---
拥有抽象对象的集合:Set foes; 我想要一个这样的方法: List getFoesByType(TypeEnum type); 我已经尝试过: List result = new ArrayLi
我正在尝试使用 scrapy 填写 POST 表单,以尝试预订火车票。 我以为 FormRequest 类可以做这件事,但我无法处理 javascript 表单。 Scrapy 爬虫什么都不返回。 我
我使用以下代码生成带有渐变的图像。我逐个元素访问数组。有更好的方法吗?谢谢。 import cv2 import numpy as np x = np.ndarray((256,256,3), dty
我有一个数据对应于数据库列表和差异行,以及它们的使用日期。 DB Dates USAGE ABC 03-06-2018 IN USE
我是一名优秀的程序员,十分优秀!