我不知道如何解释这个问题,所以请耐心等待。
我正在尝试将相似的行组合在一起,基本上忽略第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 |
+--+-------------------------+
答案 0 :(得分:2)
你可以通过巧妙的技巧来做到这一点。诀窍是从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;