我不知道如何很好地解释这一点,所以请多多包涵。
我试图对彼此相邻的相似行进行分组,如果相同,则基本上忽略第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。对于序列中的值,此数字将相同。
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;