4

我试图弄清楚如何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

有什么建议么?

4

2 回答 2

1

你不能在MySQL.

问题是您定义的关系“类似于”不是传递性的。在您的示例中,Smith Inc类似于John Smith(per SSN) 并且John Smith类似于Jane Smith(per name),但Smith Inc不类似于Jane Smith. 因此,没有一个值可以与所有记录进行比较,并且GROUP BY在这里无济于事。

在其他支持递归的系统中,您可以构建此关系的传递闭包,这将允许分组,但这在MySQL.

于 2011-05-06T21:22:54.803 回答
0

像这样:

SELECT
    name,
    ssn,
    COUNT(*)
FROM TheTable
GROUP BY
    name,
    ssn
于 2011-05-06T21:13:22.687 回答