4

GROUP BY複数の列の方法を理解しようとしています。SSNまたは住所が一致した場合にアイテムをグループ化したい。たとえば、次の 3 つのレコードがあります。

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、ここでは役に立ちません。

再帰をサポートする他のシステムでは、グループ化を可能にするこの関係の推移閉包を構築できますが、これは .NET では簡単な作業ではありませんMySQL

于 2011-05-06T21:22:54.803 に答える
0

このような:

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