我有一個小型的超過100位居民的MySQL數據庫,我住在這個複雜的地方。爲了簡化,它包含單元號碼,姓氏,名字,電話號碼和電子郵件地址。電子郵件地址是不相關的問題,但他們解釋爲什麼人們在同一單位同一姓氏有不同的條目..在MySQL中智能組合重複行選擇結果
下面是一些樣本數據:
UNIT,SURNAME,FIRST_NAME,PHONE
1,Evans,Bob,12345
2,Smith,Jane,23456
2,Smith,Jim,23456
3,Jones,Joe,45678
4,Jones,Jason,98765
5,Wong,Bill,95147
5,Lee,Jane,95147
綜上所述數據:
- 鮑勃埃文斯住在他自己的,
- 簡&吉姆·史密斯一起住在同一個單元,並具有相同的電話號碼(但不同的電子郵件地址,因此分隔符Ë項),
- 喬 - 瓊斯和賈森·瓊斯,儘管共享同一個姓,住在不同的單位,(顯然)有不同的電話號碼,並
- 比爾Wong和李正住在一起,並具有相同的電話號碼,但有不同的姓氏。
我想創建一個選擇查詢,將生成(按姓氏排序)一個電話列表,能夠智能識別出兩個人共享同一電話號碼(即它們共享相同的單元號是事實同姓假設很多,但我認爲與實際的MySQL查詢無關),並將它們組合成結果中的單一行,同時留下具有不同姓氏但具有相同電話號碼的人。換句話說,在上述數據的選擇的結果是這樣的:
UNIT,SURNAME,FIRST_NAME,PHONE
1,Evans,Bob,12345
4,Jones,Jason,98765
3,Jones,Joe,45678
5,Lee,Jane,95147
2,Smith,Jane & Jim,23456
5,Wong,Bill,95147
SELECT unit, surname, phone,
group_concat(first_name order by first_name SEPARATOR ' & ') AS name
FROM owners
GROUP BY surname;
然而,結合喬·瓊斯和賈森·瓊斯在喬·瓊斯的電話和單元號:
3,Jones,Joe & Jason,45678
我想細化查詢,以保持喬·瓊斯和賈森·瓊斯他們自己的單獨條目與他們自己的電話號碼。如果有幫助,每行都有一個主鍵「id」列。
任何建議或指針將受到歡迎。非常感謝。
克雷格
感謝akrys,但這正是我需要的。我將在我用來生成實際列表的腳本中按正確順序獲取列。 – CraigH