Mysql GROUP BY类似字段

时间:2012-07-26 18:07:27

标签: 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的唯一记录。

用户无法输入CityZip代码(从下拉菜单中选择)。

理想情况下,我希望我的查询返回以下内容:

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) 

(对于无望的伪代码真的很抱歉..只是试图让我的想法得到解决)。

1 个答案:

答案 0 :(得分: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