Mysql GROUP BY похожие поля
Предположим, у меня есть эта таблица с заказами клиентов:
orderid Name Email Address_1 Address_2 City* Zip*
---------------------------------------------------------------------------
1 James j@j.com 12 Foo St Fooville 1001
2 Alice a@a.com 92 Bla Road Sville 3933
3 James j@j.c0m 12 Foo Street Fooville 1001
4 james king j@j.com 12 Foo St Fooville 1001
5 Anth ann@h.com 12 Foo Street Stacker 2932
6 James j@j.com 12 American St GiftCity 0283
Чтобы сэкономить на почтовых расходах (для нас), было бы идеально, если бы мы могли отправлять несколько заказов одному и тому же лицу на один и тот же адрес в одном отпечатке. Для этого мне нужна уникальная запись для id 1, 3, 4.
City
а также Zip
коды не могут быть введены пользователем (выбирается из выпадающего списка).
В идеале я хотел бы, чтобы по моему запросу было возвращено следующее:
orderid Name Email Address_1 Address_2 City* Zip* Count
---------------------------------------------------------------------------
1 James j@j.com 12 Foo St Fooville 1001 3
2 Alice a@a.com 92 Bla Road Sville 3933 1
5 Anth ann@h.com 12 Foo Street Stacker 2932 1
По сути, алгоритм SQL делает группировку по похожим на следующие столбцы: Name
, Email
, concat(Address_1 and Address_2)
,
Любые советы и решения будут высоко оценены.
Если есть способ сделать
GROUP BY similar((concat(name,email,address_1)
(очень жаль за безнадежный псевдокод.. просто пытаюсь донести свои мысли).
1 ответ
Ну, вместо обсуждения здесь запрос изменить в соответствии с вашими требованиями
select
orderid ,
name ,
email ,
address_1 ,
address_2 ,
city ,
zip ,
count(orderid)
from test
group by name
order by orderid
Приносит это
Name Email Address_1 Address_2 City Zip Count
1 James j@j.com 12 Foo St Fooville 1001 3
2 Alice a@a.com 92 Bla Road Sville 3933 1
4 James King j@j.com 12 Foo St Fooville 1001 1
5 Anth ann@h.com 12 Foo St Stacker 2932 1