【发布时间】:2021-10-15 19:49:53
【问题描述】:
我想按 2 列分组,但在“或模式”下...我想我会用一个例子更好地解释自己:
ID | Col 1 | Col 2 | Col 3 | Rest of columns ...
-------------------------------------------------------
1 A Q green
2 B R blue
3 B S red
4 C T purple
5 D U orange
6 E R black
7 F U brown
8 F V pink
9 G W white
所以... 按第 1 列分组,我们将第 2+3 行和第 7+8 行合并到结果中 按第 2 列分组,我们将第 2+6 行和第 7+5 行合并到结果中
但我想在它们之间进行分组,因此 SQL 结果(在这种情况下)输出为 2 行:
- 组中的第 2、3 和 6 行
- 其他组中的第 5、7 和 8 行
- 在其他独特的行中
这在唯一的 SQL 中是否可行?还是在编程代码中处理这些数据“合并”更好?
所以选择第 3 列的 concat 的结果可能是:
blue,red,black
brown,pink,orange
(and then the rest that are "unique" of the two groupings...)
green
purple
white
所以它就像“按组”但考虑到 2 列:-P 这很难解释,但我希望视觉示例能自言自语。
顺便说一句:我在 MySQL 8 中……不管是哪一个,如果我必须升级或更改,我都可以做到 ;-)
【问题讨论】:
-
使用 CTE,然后将它们联合起来。
-
你用的是什么版本的 MySQL?
-
另外,您还没有告诉我们我们应该如何知道哪一列(
Col1或Col2)应该用于任何给定的行。 -
"按第 1 列分组,我们有第 2+3 行和第 7+8 行" - 不,
GROUP BY Col1会给你( 1, 2+3, 4, 5, 6, 7+8, 9 ),而不是( 2+3 )- 或者你想要一个隐含的HAVING COUNT(*) >= 2? -
您建议的行分组中的值有什么共同点?我无法从您的问题中看出您如何知道将 5、7 和 8 组合在一起。
标签: mysql group-by group-concat