我正试图找出如何在多列上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
有什么建议吗?
答案 0 :(得分:1)
您无法在MySQL
中轻松完成此操作。
问题在于,您定义的关系“类似于”并不是传递性的。在您的示例中,Smith Inc
类似于John Smith
(每SSN
),John Smith
类似于Jane Smith
(每个名称),但是Smith Inc
与Jane Smith
不相似。所以没有一个值可以与所有记录进行比较,而GROUP BY
在这里没有帮助。
在支持递归的其他系统中,您可以构建此关系的传递闭包,这将允许分组,但这在MySQL
中不是一件容易的事。
答案 1 :(得分:0)
像这样:
SELECT
name,
ssn,
COUNT(*)
FROM TheTable
GROUP BY
name,
ssn