sql:如果另一列在命名空间中引起冲突,则更新列

2023-12-27

我有一个 SQL 表,其中包含包列表(10000 个唯一条目的顺序)以及任何给定包的相应类别(100 个唯一条目的顺序)。给定的包可以属于多个类别(15000 个唯一组合的顺序,这就是表的大小)。

所有包名称都应该是唯一的,并且不与类别名称冲突,但是,情况似乎并非如此。

我需要的是弄清楚这 10k 个包中是否有任何一个与 100 个类别中的任何一个具有相同的名称,如果是,则修改所有此类包名称以包含,pkg后缀,以确保对两个命名空间的访问可以共享,并保持唯一。


最简单的情况是这样的:

sqlite> select * from categories where value=fullpkgpath;
lang/mono|lang/mono

sqlite> select fullpkgpath, value from categories where fullpkgpath="lang/mono";
lang/mono|devel
lang/mono|lang
lang/mono|lang/mono

应该转换成这样:

lang/mono,pkg|devel
lang/mono,pkg|lang
lang/mono,pkg|lang/mono

但是,也可能存在更间接的冲突(给定的包与其不属于的类别发生冲突),如下所示:

sqlite> select * from categories where fullpkgpath="lang/erlang" or fullpkgpath="lang/node";
lang/erlang|lang
lang/node|devel
lang/node|lang
lang/node|lang/python

应该转换成这样:

lang/erlang,pkg|lang
lang/node,pkg|devel
lang/node,pkg|lang
lang/node,pkg|lang/python

既然两者lang/erlang and lang/node它们本身也是类别:

sqlite> select * from categories where value="lang/erlang" limit 8;
databases/erl-Emysql|lang/erlang
databases/erl-couchbeam|lang/erlang
databases/erl-epgsql|lang/erlang
databases/erl-sqerl|lang/erlang
devel/erl-automeck|lang/erlang
devel/erl-bear|lang/erlang
devel/erl-depsolver|lang/erlang
devel/erl-ej|lang/erlang

sqlite> select * from categories where value="lang/node" limit 8;
databases/node-pg|lang/node
databases/node-sqlite3|lang/node
devel/node-async|lang/node
devel/node-bindings|lang/node
devel/node-buffer-writer|lang/node
devel/node-cloned|lang/node
devel/node-expresso|lang/node
devel/node-fibers|lang/node

我正在使用 sqlite3 和perl https://github.com/cnst/ports-readmes/blob/master/files/make-readmes在 OpenBSD 上。这database http://ports.su/databases/sqlports,如果需要的话,是可在 ftp 上找到 ftp://ftp.nluug.nl/pub/OpenBSD/5.4/packages/amd64/sqlports-compact-2.8.tgz.


要检查某个值是否在一组值中,请使用 IN:

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

sql:如果另一列在命名空间中引起冲突,则更新列 的相关文章

随机推荐

  • okhttp 和 httpurlconnection 之间的区别?

    这两个库有什么区别 我如何理解这两个库之间存在差异 因为 Volley 使用 httpurlconnection 和 Retrofit okhttp 但我不明白它们之间的区别以及两种解决方案的优缺点 什么时候 okhttp 更好 什么时候
  • Android 上的 Dagger 2:在 Activity 和保留的 Fragment 中注入相同的依赖项

    我有类的对象F1 and F2我想注入保留的片段 我也有一个类对象A这取决于 Activity 我希望将其注入到该 Activity 以及附加到该 Activity 的片段管理器的保留片段中 我写了下面的代码 首先 Activity依赖的模
  • 为什么 C++ 不支持模板(非静态)成员变量?

    虽然静态成员变量可以在 C 14 中模板化 但这不起作用 class SomeClass public template
  • 数组循环从中间开始

    我有以下数组 alphabet array a b c d e f g 如果我想从 d 并循环遍历要输出的数组d e f g a b c 如何才能实现这一目标
  • Spring Boot 应用程序的 JUnit @BeforeClass 非静态解决方法

    JUnit s BeforeClass如果您希望注释在所有注释之前运行一次 则必须将注释声明为静态 Test方法 但是 这不能与依赖注入一起使用 我想清理我的数据库 Autowire在运行 JUnit 测试之前使用 Spring Boot
  • 使用“Simple HTML DOM”获取两个跨度之间的文本

    基本上 我需要获取两个跨度标签之间的文本 并且我尝试了很多不同的方法但没有解决方案 我也在使用 Simple HTML DOM Parser http simplehtmldom sourceforge net 所以我能做的有点受限 这是基
  • 如何使用 Win32 设置组框标题的字体和颜色

    我被 WIN32 困住了 没有 NET 或任何托管的东西 WM CTLCOLORSTATIC 是控制组框标题颜色的正确方法 但是 它不再起作用 如果您的应用程序使用清单来包含版本 6 comctl 库 则 Groupbox 控件将不再发送W
  • 在大字典中查找某个单词的存在性

    假设我有一本包含 2 亿单词的平面文件大字典 并且我的函数需要检查字典中是否存在任何给定单词 那么最快的方法是什么 你不能将字典存储在内存中 因为你只有 1GB 内存 您可以将其存储在数据库中 但是如果没有任何优化 查询它仍然会非常非常慢
  • 将 .gitignore 应用到提交的文件

    我已经提交了大量文件 现在我想忽略它们 我怎样才能告诉 git 现在忽略未来提交中的这些文件 编辑 我也想从存储库中删除它们 它们是在构建后创建的文件或用于特定于用户的工具支持 编辑后 gitignore要匹配被忽略的文件 你可以这样做gi
  • 在这种情况下,到底什么是内存泄漏?

    为了清除所有后台活动 我执行了以下操作 我保留了一个静态数组列表 每当我从一个活动转到另一个活动时 在新活动的 onCreate 方法中 我将当前活动的对象添加到该列表中 如下所示 SomeClass addActivity Current
  • 使用 jquery-out-of-the-box 测试空字符串的最佳方法是什么?

    使用 jquery out of the box 即无需插件 测试空字符串的最佳方法是什么 我试过this http zipalong com blog p 287 但它至少不能开箱即用 使用内置的东西会很好 我不想重复 if a null
  • 局部变量地址可以保留在返回指针的函数中吗

    include
  • jquery:中止ajax会触发完成还是失败?

    我不明白关于 ajax done 和 fail 的事情 我开始我的 ajax 调用 将其分配给一个变量 在下一个 ajax 调用中 我测试变量是否已定义 然后调用 abort 我无法理解 abort 是否会导致 done 的执行 如果它导致
  • 范围输入类型的步长参数

    是否可以为范围元素内的步骤参数指定小数 根据我读过的几篇文章 其中一篇关于Nettuts http net tutsplus com tutorials html css techniques rethinking forms in htm
  • 参数化查询中的参数计数不匹配

    出于性能原因 我在代码中使用了大量参数化查询 简而言之 有些有效 有些无效 我在构建数据库包装期间初始化查询 如下所示 QString querystring QString SELECT somevalue FROM sometable
  • Typescript动态创建界面

    我使用 simple schema 在对象中定义数据库模式 name string age integer 是否可以通过某种方式从该对象创建接口或类 这样我就不必将所有内容输入两次 您可以这样做 但它可能会带来更多的麻烦 而不是它的价值 除
  • Hibernate 使用 orphanRemoval 触发约束违规

    我在 JPA Hibernate 3 5 3 设置方面遇到问题 其中我有一个实体 一个 Account 类 它有一个子实体列表 Contact 实例 我试图能够将联系人的实例添加 删除到帐户的 List 属性中 将新实例添加到集合中并调用
  • vagrant box + 变量VVV的正确备份和恢复方法

    我的 MacBook 上安装了一个 vagrant box ubuntu trusty64 我用变量 VVV 扩展了这个框 gt https github com bradp vv os x installation https githu
  • 如何在 Rascal 中将值类型转换为 Map?

    我有一个存储映射的值类型变量 但我无法通过提供键来访问这些值 rascal gt a value s s rascal gt a s stdin 2 3 lt 1 2 gt lt 1 5 gt subscript not supported
  • sql:如果另一列在命名空间中引起冲突,则更新列

    我有一个 SQL 表 其中包含包列表 10000 个唯一条目的顺序 以及任何给定包的相应类别 100 个唯一条目的顺序 给定的包可以属于多个类别 15000 个唯一组合的顺序 这就是表的大小 所有包名称都应该是唯一的 并且不与类别名称冲突