sqlserver group by子句

时间:2014-02-22 22:22:24

标签: sql sql-server group-by

我需要一些指导来编写最佳查询。我有一张看起来像这样的表:

CompanyID   EmployerAddress        DateVerified
1           12 Main St, Devon PA
2           32 Church St, Concord MA
3           12 Main St, Devon PA
4           999 Elm St, Salem MA
5           999 Elm St, Salem MA

我必须在C#程序中使用地理编码验证此雇主地址(我已经写过&适用于单个记录)。如果地址是好的,那么我将Dateverified更新为今天的日期。我有大约10000条记录。自公司ID 1和3; 4& 5有相同的地址,我不想验证每一个。如何按地址分组并更新日期?我用了

select 
    EMployeraddress,
    CompanyID 
from 
    Companies 
group by 
    EMployeraddress,
    CompanyID 
having 
    count(EMployerAddress) > 1;

但这并没有给我正确的结果。任何人都可以帮助我。

由于 Rashmi

3 个答案:

答案 0 :(得分:1)

好吧,如果地址只是一个表示地址的字符串,那么如果它不一致,那么你就不会有一致的结果。

通常,您将地址存储在单独的表中,并且您在Companies表中有一个指向Addresses表的外键。这样你就可以真正按外键分组。

如果你所拥有的只是一个字符串,那么就像我说的那样,如果它们没有被完整地输入,你就无法做到。

干杯

答案 1 :(得分:1)

你不需要id。

1)选择地址

select 
    EMployeraddress
from 
    Companies 
group by 
    EMployeraddress

2)用你的代码检查

3)更新表

UPDATE your_table
SET DateVerified = (SELECT now())
WHERE EmployerAddress = 'your_address'

答案 2 :(得分:0)

我是对还是不对?但我认为你所需要的只是:

UPDATE Companies SET DateVerified = GETDATE() 
WHERE EmployerAddress = 'TheVerified Address'