Mysql GROUP BY 相似字段

标签 mysql sql group-by soundex

假设我有这张客户订单表:

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 算法在以下列类似的基础上进行分组:NameEmailconcat(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/

相关文章:

MySQL 从 n 中随机选择 m

mysql - 在 ORDER BY 之后分组

sql - com.microsoft.sqlserver.jdbc.SQLServerException : Connection reset by peer: socket write error in grails app with sql server 2008

c# - 从 gridview 中的存储过程捕获 SQLException

mysql SUM(值) 其中 SUM(值) > 2500

mysql - 检索包含不止一次一起出现的 object_id 列表的列和包含它出现次数的计数的第二列

sql-server 我应该使用哪个所有者?

mysql - 使用 union 时如何组合具有不同列数的 SELECT 语句?

在 java 中创建动态 Web 项目期间出现 java.lang.ClassNotFoundException : com. mysql.jdbc.Driver

php - CodeIgniter:将数据从数据库导出到 excel 并下载