当前位置: 首页 > 面试题库 >

在MySQL中将相邻的相似行分组

狄宪
2023-03-14
问题内容

我不知道如何很好地解释这一点,所以请多多包涵。

我试图对彼此相邻的相似行进行分组,如果相同,则基本上忽略第n +
1行。我不确定这在MySQL中是否容易实现。这些行除描述外不共享其他任何属性。如果还有其他不重复的“描述”,我仍然希望将它们返回。

我有一张桌子,上面满是这样的条目:

+--+-------------------------+
|id|description              |
+--+-------------------------+
| 1|hello                    |
+--+-------------------------+
| 2|foobar                   |  \_   Condense these into one row
+--+-------------------------+  /
| 3|foobar                   |
+--+-------------------------+
| 4|hello                    |
+--+-------------------------+
| 5|world                    |  \__   Condense these into a row
+--+-------------------------+  /
| 6|world                    |
+--+-------------------------+
| 7|puppies                  |
+--+-------------------------+
| 8|kittens                  |  \__   These too...
+--+-------------------------+  /
| 9|kittens                  |
+--+-------------------------+
|10|sloths                   |
+--+-------------------------+
|11|kittens                  |
+--+-------------------------+

问题答案:

您可以使用巧妙的技巧来做到这一点。诀窍是计算与特定id 不同 的描述的数量id。对于序列中的值,此数字将相同。

在MySQL中,您可以使用相关子查询来进行此计数。其余的只是按此字段分组以将值组合在一起:

select min(id) as id, description, count(*) as numCondensed
from (select t.*,
             (select count(*)
              from table t2
              where t2.id <= t.id and t2.description <> t.description
             ) as grp
      from table t
     ) t
group by description, grp;


 类似资料:
  • 问题内容: 我根据员工的工作时间做一些报告。在某些情况下,数据包含两个单独的记录,这实际上是一个时间段。 这是该表的基本版本和一些示例记录: 数据: 在该示例中,最后两个记录在时间上是连续的。我想编写一个查询,该查询结合了所有相邻记录,因此结果集是这样的: 理想情况下,它还应该能够处理两个以上的相邻记录,但这不是必需的。 问题答案: 本文为您的问题提供了许多可能的解决方案 http://www.s

  • 问题内容: 我有两个表的列相似-假设表A的列为LABEL_A,表B的列为LABEL_B。LABEL_A和LABEL_B的数据类型相同。 如何在单个查询中从两个表中选择LABEL?(因此,查询结果包含单个列LABEL,该列包含两个表的LABEL列中的数据)。 编辑:我可以在游标中使用这样的UNION查询吗? 感谢您的回答。 问题答案: 使用: 会更快,但是如果存在重复项,则不会删除重复项。如果要删除

  • 问题内容: 我用Java实现了Levenshtein算法,现在可以通过算法进行更正,也就是成本。这确实有一点帮助,但并没有太大帮助,因为我希望将结果表示为百分比。 所以我想知道如何计算那些相似点。 我也想知道你们的人民是如何做的以及为什么。 问题答案: 两个字符串之间的Levenshtein距离定义为将一个字符串转换为另一个字符串所需的最小编辑次数,允许的编辑操作为单个字符的插入,删除或替换。(维

  • 我正在寻找创建一个数据库搜索(MySQL),使用PHP来查找电气部件的零件号,但希望搜索也能找到类似的字符 例如,搜索6SE7O90也应搜索6SE7090,搜索4I737A也应搜索4L737A,因为在某些零件标签上打印的0/O和I/L可能看起来相似。 在PHP/MySQL中实现这一点的最佳方法是什么?

  • 问题内容: 我有这样一个浮点数组: 现在,我想像这样对数组进行分区: // [200]由于集群支持较少,将被视为异常值 我必须为多个数组找到这种段,但我不知道分区大小应该是多少。我试图通过使用层次聚类(聚集)来做到这一点 ,它为我提供了令人满意的结果。但是,问题是,建议我不要对一维问题使用聚类算法,因为这样做没有任何理论上的依据(因为它们是针对多维数据的)。 我发现了另一个建议,而不是聚类,即自然

  • 问题内容: 如何匹配MySQL中单词的变体,例如,对会计的搜索应与会计,会计,会计等匹配。我在共享主机上,因此不能向levenshtein等MySQL添加任何功能。 我想类似谷歌如何匹配“的东西 会计课程 ”和“ 会计课程 ”的“搜索时, 会计师课程 ”。例子。 我的服务器语言是php,如果只能在其中实现而不是在SQL中实现。 当前语句如下。 问题答案: MySQL在全文搜索方面不是很好,您可能想