我想弄清楚如何在多列上GROUP BY
。我想在 SSN 或 地址匹配时对项目进行分组。例如,这里有三个记录:
account_number | name | ssn | address
---------------+--------------+-------------+----------------------
23952352340 | SMITH INC | 123-45-6789 | P.O. BOX 123
3459450340 | JOHN SMITH | 123-45-6789 | 123 EVERGREEN TERRACE
45949459494 | JANE SMITH | 395-23-1924 | 123 EVERGREEN TERRACE
这就是我想要结束的:
names
----------------------
SMITH INC, JOHN SMITH, JANE SMITH
有什么建议吗?
最佳答案
你不能在 MySQL
中轻松地做到这一点。
问题是您定义的“类似于”关系不具有传递性。在您的示例中,Smith Inc
类似于 John Smith
(根据 SSN
),John Smith
类似于 Jane Smith
(按名称),但 Smith Inc
与 Jane Smith
不相似。因此,没有一个值可以与所有记录进行比较,GROUP BY
在这里无济于事。
在其他支持递归的系统中,您可以构建此关系的传递闭包,从而允许分组,但这在 MySQL
中并非易事。
关于mysql - 按 X 或 Y 分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5916685/