mySQL 获取某些行的所有可能组合

2024-04-03

我在 mySQL 中有一个奇怪的请求。我发现了很多方法可以通过添加更多连接来对组合对或某个其他数字执行此操作,但我想知道是否有一种动态方法可以对任意数量的组合执行此操作。

解释一下我是否有一个表 table 有 1 列 (column_id) 和 (column_text)

Id | Text
--------
1  | A
2  | B
3  | B
4  | B
5  | A

然后通过运行带有参数 A 的过程 GetCombinations 应该产生:

CombinationId | Combinations
---------------------------
1             |      1
2             |      5
3             |      1,5

通过运行带有参数 B 的过程 GetCombinations 应该产生:

CombinationId | Combinations
---------------------------
1             |      2
2             |      3
3             |      4
4             |      2,3
5             |      2,4
6             |      3,4
7             |      2,3,4

显然数字越大,我预计结果会呈指数级增长。

这样的查询可能吗?我所能找到的只是使用连接将每个结果的长度限制为连接数量的结果。

谢谢

UPDATE

我找到一篇文章here https://dba.stackexchange.com/questions/29661/sql-query-for-combinations-without-repetition但组合的最大数量应该很小(最多 20 个左右)。在我的情况下,有 100 个组合,我计算出它将产生: 94268904488832477456261857430572424738096937640789516634942387772947070700232237988829761592077291198236 05850588608460429412647567360000000000000000000099行(笑)

所以我将我的答案归类为不可行

但是有没有办法通过最多 2 种组合获得这个结果?

CombinationId | Combinations
---------------------------
1             |      2
2             |      3
3             |      4
4             |      2,3
5             |      2,4
6             |      3,4

我找到了一个使用 JOIN 获取所有组合的查询,但我不确定如何生成组合 id 以及如何获取各个行。

UPDATE 2

使用解决了它

SELECT @rownum := @rownum + 1 AS 'CombinationId'
cross join (select @rownum := 0) r

我用 UNION ALL 进行了查询


你想要做的是生成电源组 http://en.wikipedia.org/wiki/Power_set包含字段的所有元素的集合Text == <parameter>。正如您已经发现的,这个数字随着输入数组的长度呈指数增长。

如果您可以用其他语言(例如 php)解决它,请看一下:

在 PHP 中查找数组的子集 https://stackoverflow.com/questions/6092781/finding-the-subsets-of-an-array-in-php

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

mySQL 获取某些行的所有可能组合 的相关文章

  • MySQL InnoDB 查询性能

    我正在尝试优化一个简单的 sql 查询 该查询将多次运行大量数据 这是场景 MySQL 与 InnoDB 表 where 和 join 中使用的所有字段都已索引 表有 FK 我不需要查询的整个缓存 但每个表的缓存是可能的 表有更多的更新 插
  • 如何使用 SQL 查询在 Access 中的字段上设置验证规则?

    我正在使用 MS Access 2016 Office 365 目前遇到问题 下面是一个演示此问题的示例 这里我创建了一个表 名为节点家庭链接 由两个字段组成 NodeID 和 FamilyID 如下所示 现在 NodeID 是从另一个表
  • PostgreSQL Age() 函数:在不同月份登陆时出现不同/意外的结果

    今天 我在 PostgreSQL 9 6 中运行此查询时遇到了无法解释的结果 SELECT age 2018 06 30 2018 05 19 AS one age 2018 07 01 2018 05 20 AS two 两列的预期结果
  • 使用 SQL Filestream 时出现 OutOfMemoryException

    我正在尝试将大约 600 MB 的 zip 文件上传到 SQL 2008 FILESTREAM 表 但出现 OutOfMemoryException 我正在使用 SqlFileStream 类上传文件 如本教程中所述 http www ag
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • SqlCommand 参数与 String.Format [重复]

    这个问题在这里已经有答案了 我一直在互联网上搜索 但似乎找不到任何可以解释我的问题的内容 可能是我没有使用正确的搜索字符串 所以我在这里发帖希望有人可以帮助我有了这个 我的程序是使用Visual Studio 2010用C 编写的 我注意到
  • 表名搜索

    我使用以下命令在特定数据库的存储过程中搜索字符串 USE DBname SELECT Name FROM sys procedures WHERE OBJECT DEFINITION OBJECT ID LIKE xxx 修改上面的内容是否
  • 通过连接从两个表中删除?

    我有两个表如下 tbl1 tbl2 id article id title image whole news tags author older datetime 其中 tbl1 id gt tbl2 article id 如何从两个表中删
  • 从表中删除孤儿

    我正在尝试清理一张有很多孤立项目的桌子 我通过查找空值来检查是否与另一个表存在关系来解决此问题 DELETE FROM table1 LEFT JOIN table2 ON table1 ID table2 ID WHERE table2
  • MySQL 存储过程将值分配给 select 语句中的多个变量

    这是我的存储过程 我在为声明的变量赋值时遇到问题 当我执行它时 插入和更新命令工作正常 但声明变量的值保持为 0 但我在数据库中有一些价值 我怎样才能正确地做到这一点 BEGIN DECLARE PaidFee INT DEFAULT 0
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • sql查询将两列与一列连接起来

    我在 MS Access 2010 中有 2 个表 如下所示 USERS u id u name LOAN l id l from ref users u id l to ref users u id l amount Users u id
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • 比较表中的行以了解字段之间的差异

    我有一个包含 20 多列的表 客户端 其中大部分是历史数据 就像是 id clientID field1 field2 etc updateDate 如果我的数据如下所示 10 12 A A 2009 03 01 11 12 A B 200
  • 使 pdo::query 静态

    当我运行下面的代码时出现此错误 我通常使用 msql 函数 但我尝试使用 PDO 代替 怎么了 致命错误 第 14 行无法静态调用非静态方法 PDO query
  • 为什么 MySQL 创建带有 _seq 后缀的表?

    我创建了一个 InnoDB 表 名为foo在 MySQL 中 一旦我对表执行插入操作 我就会看到另一个表foo seq被建造 如果我删除自动生成的表 它会在下一次插入后出现 是什么原因造成的 听起来像是正在创建一个序列 您是否有自动生成的主
  • Python:如何使用生成器来避免 sql 内存问题

    我有以下方法来访问 mysql 数据库 并且查询在服务器中执行 我无权更改有关增加内存的任何内容 我对生成器很陌生 并开始阅读更多有关它的内容 并认为我可以将其转换为使用生成器 def getUNames self globalUserQu
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep

随机推荐

  • 纬度值无效:必须介于 -90 到 90 之间

    我尝试在我的phonegap应用程序中通过javascript Azure Map创建地图 但出现以下错误 atlas min js api version 1 0 362 未捕获 承诺 错误 无效的 LngLat 纬度值 必须介于 90
  • 如何在 css 动画末尾使用 display:none

    我想在关键帧动画的末尾添加一个 display none 属性 就像这样 sw intro animation introtop animation duration 0 8s animation delay 2s animation fi
  • Python 中的日期差异(以分钟为单位)

    如何计算Python中以下时间戳的时间差 以分钟为单位 2010 01 01 17 31 22 2010 01 03 17 31 22 minutes diff datetime end datetime start total secon
  • SwiftUI Plain List 如何删除 iOS16 中的顶部标题填充

    我正在寻找一种方法来删除 SwiftUI 列表中的顶部填充 借助 iOS 15 我们可以做到UITableView appearance sectionHeaderTopPadding 0 然而 在 iOS 16 中 List 已通过 UI
  • 具有代理 Lambda 的 AWS API Gateway:Lambda 函数的权限无效

    I am using AWS API Gateway with a proxy Lambda when the name of the lambda function is coming as a stage variable Meanin
  • PHP、HTML、Javascript 执行顺序

    我有一个 test php 文件 该文件包含一些 PHP 代码 HTML 元素以及一些内部 JavaScript 和一些外部 JavaScript 我想知道哪个首先加载或执行 PHP HTML 还是 JavaScript 我想知道执行顺序
  • 单元格的内容应占据所有行而不改变列宽

    我想要一张不标准的桌子 它应该是这样的 这是我的demo http jsbin com kegogabine edit html output 正如您所看到的 第一列的宽度因文本而增加 但我不希望出现这种行为 我希望文本从左到右整行 更新
  • 将两个 UIImage 合并为 1 个以保存到库

    我想知道如何将 2 个 uiimage 合并为 1 个 我想将最终产品保存到图书馆 为了保存图像 我使用了 UI 按钮 这是我如何保存 UIImageview image 的片段 IBAction getPhoto id sender UI
  • vert.x 有集中过滤吗?

    我是 Vert X 的新手 Vert x 是否有内置的集中式过滤器 我的意思是您将在 J2EE 应用程序上使用的过滤器类型 例如 所有页面都必须经过身份验证过滤器或类似的操作 在 Vert x 中是否有标准化的方法来实现这一目标 我知道这个
  • 有索引的搜索时间 > 无索引的搜索时间

    我有一个集合 numbers 其中包含 200000 个文档对象 其中 number i i 1 到 200000 没有任何索引 gt 10000 给出 nscanned 200000 和 115 ms 对于数字 gt 10000 的索引给
  • 在 PHP 中将时区偏移量转换为友好名称

    我正在尝试使用 PHP 将 RFC 时间戳转换为友好的日期 这是例子 Wed 17 Feb 2010 19 44 01 0500 我希望将其打印为 Wed 17 Feb 2010 19 44 01 EST 使用 date strtotime
  • 为什么 :before 和 :after 伪元素需要 'content' 属性?

    鉴于以下情况 为什么 after选择器需要内容属性才能运行吗 test width 20px height 20px background blue position relative test after width 20px heigh
  • 利用 JQuery find 或 inArray 方法查找数组中的项目

    我想知道是否有人知道使用 JQuery find 方法或 inArray 方法来查找数组中的项目的方法 我似乎在文档中找不到任何内容 例如 var items id 1 name bob id 2 name joe id 3 name be
  • 如何获取CPU一级缓存(主缓存)信息?

    我尝试使用 WMI 获取 CPU 缓存信息 效果很好 但仅适用于 2 级和 3 级缓存 所以我的问题是 如何获取 CPU 1 级缓存信息 这是WinAPI方式 它使用GetLogicalProcessorInformation http m
  • Visual Studio 2010 Beta 2 + ClearType

    我想知道 您对 Visual Studio 2010 编辑器 Beta 2 中的文本渲染满意吗 在我的主显示器上 即使使用 12 号字体 它看起来也非常模糊 当使用字体大小 10 或 11 时 效果很糟糕 可以为 VS code 窗口显式设
  • 找不到 Bottle 应用程序中的静态文件 (404)

    我已经回顾了这里有关此问题的所有问题 回顾了瓶子教程 回顾了瓶子谷歌小组讨论 据我所知 我做的一切都是正确的 但不知何故 我无法正确加载 CSS 文件 我在静态文件上收到 404 错误 http localhost 8888 todo st
  • javascript 字符串中的空值

    在 javascript 中我有以下内容 var inf id city 如果 id 或 city 为 null 则 inf 将为 null 有没有什么巧妙的方式来表示如果 id 或 city 为 null 则将其设为空白 我知道在 c 中
  • 使用 ML Kit 扫描条形码时出现黑屏而不是 QR 扫描仪

    在 Android 中创建条形码扫描仪的最简单方法可能是使用 Google Code Scanner APIhttps developers google com ml kit vision barcode scanning code sc
  • 如何使 T-SQL 游标更快?

    我在 SQL Server 2000 下的存储过程中有一个游标 现在无法更新 它更新所有表 但通常需要几分钟才能完成 我需要让它更快 而 GDEPO 入口仓库 CDEPO 出口仓库 Adet 数量 E CIKAN 已使用的数量 记录说明 2
  • mySQL 获取某些行的所有可能组合

    我在 mySQL 中有一个奇怪的请求 我发现了很多方法可以通过添加更多连接来对组合对或某个其他数字执行此操作 但我想知道是否有一种动态方法可以对任意数量的组合执行此操作 解释一下我是否有一个表 table 有 1 列 column id 和