我有一张包含大量地址记录的表格。新数据被添加到表中,我想查找与现有名称,邮政编码,街道匹配的所有新记录,以及已分配给同一client_id(1)的所有新记录以及某些其他标准(结果代码)。我正在努力的部分是获取与现有记录匹配的新记录的id。
现有记录的日期为date_exported int(8),添加的新记录的date_exported为0。
在date_exported字段周围使用带有MIN的下面的SQL,它显示了0个date_exported记录,但由于分组和拥有,ID没有与SQL的其余部分一起排序。如果没有MIN,它会显示正确的id和数据,但是对于带有date_exported的旧记录!= 0 - 我想找到添加了date_exported = 0的新记录
SELECT id, name, postcode, street, result_code, MIN(date_exported), COUNT(*) AS cnt
FROM fulf.third_party
where client_id = '1'
and (result_code >= '0'
and result_code < '1000' and result_code != '400')
GROUP BY name, postcode, street having cnt > 1 order by id asc
答案 0 :(得分:0)
这样的事情应该有效:
select t.*
from (
SELECT name, postcode, street, MIN(date_exported) as MinDate, COUNT(*) AS cnt
FROM fulf.third_party
where client_id = '1'
and (result_code >= '0'
and result_code < '1000' and result_code != '400')
GROUP BY name, postcode, street
having cnt > 1
) tm
inner join fulf.third_party t on tm.name = t.name
and tm.postcode = t.postcode
and tm.street = t.street
and tm.MinDate = t.date_exported