假设我有这张客户订单表:
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 的唯一记录。
用户无法输入城市
和邮政编码
(从下拉列表中选择)。
理想情况下,我希望我的查询返回以下内容:
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)
(真的很抱歉无望的伪代码..只是想表达我的想法)。
最佳答案
好吧,这里不是讨论,而是根据您的要求修改查询
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
关于Mysql GROUP BY 相似字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11675362/