查找包含最完整列

时间:2015-11-05 16:31:22

标签: mysql sql count

我有一个表格,目前只将记录缩小到唯一的联系人,并且它有效,但由于拼写错误,我仍然留下了该唯一联系人的类似记录。一些"重复"有空列或空列。

我想通过找到填写最多列的记录(尽管准确无误)来解决这个问题,排除其余部分?如果多列填充了相同的金额,请根据最近的创建日期进行选择。有没有办法做到这一点?

fileid    datecreated    first    middle    last    phone    
00001     2015-11-16     bob      null      smith   555-5555
00002     2013-18-7      BOB                SMITHE           
00003     2015-11-1      Bobb     B         Smith   555-5555
00004     2014-5-23      bob      smith             NULL

我在想我是从使用COUNT()开始的,但我不确定这是否正确。

1 个答案:

答案 0 :(得分:0)

这可以帮助您入门。根据每列是NULL还是空为每列分配1或0。得到一行的总和。订单或此总和,然后按日期。

select top 1 *
from 
    (select 
        *
      , CASE WHEN fileid IS NULL or fileid = '' THEN 0 ELSE 1 END +
        CASE WHEN datecreated IS NULL or datecreated = '' THEN 0 ELSE 1 END +
        CASE WHEN first IS NULL or first = '' THEN 0 ELSE 1 END +
        CASE WHEN middle IS NULL or middle = '' THEN 0 ELSE 1 END +
        CASE WHEN last IS NULL or last = '' THEN 0 ELSE 1 END +
        CASE WHEN phone IS NULL or phone = '' THEN 0 ELSE 1 END AS NumFilled
    from 
      YourTable) yt
order by numfilled, datecreated desc