5
我有一个表:'人'有很多列。 我需要返回没有“重复”(定义如下)的每个条目的全行以及下列内容:查找该表中共享属性的条目:first_name,last_name和work_phone(这些是重复的我的目的),并只返回date_modified字段中最新值的条目,而忽略其余部分。SQL查询返回重复最近的日期和更多
我觉得这是一个相当先进的查询,或者看起来很简单。无论哪种方式,我无法弄清楚。我使用MySQL只5.
我有一个表:'人'有很多列。 我需要返回没有“重复”(定义如下)的每个条目的全行以及下列内容:查找该表中共享属性的条目:first_name,last_name和work_phone(这些是重复的我的目的),并只返回date_modified字段中最新值的条目,而忽略其余部分。SQL查询返回重复最近的日期和更多
我觉得这是一个相当先进的查询,或者看起来很简单。无论哪种方式,我无法弄清楚。我使用MySQL只5.
返回条目在其DATE_MODIFIED领域的最新价值,忽略其它:
SELECT p.* FROM
(SELECT max(date_modified) as most_recent_date
FROM person
GROUP BY first_name,last_name,work_phone) p1
JOIN person p
ON p.date_modified = p1.most_recent_date
这将很好地工作假设DATE_MODIFIED是领域的每个组合我们独特的分组上。如果不是,我们必须加入一个唯一的字段,取一个满足最新条件的任意UUID(限制1)。
SELECT p.* FROM
(SELECT *,max(date_modified) as most_recent_date
FROM person
GROUP BY first_name,last_name,work_phone) p1
JOIN person p
ON p.UUID =
(SELECT p_uniq.UUID
FROM person p_uniq
WHERE p_uniq.first_name = p1.first_name
AND p_uniq.last_name = p1.last_name
AND p_uniq.work_phone = p1.work_phone
AND p_uniq.date_modified = p1.most_recent_date
LIMIT 1)
最后,返回完整的行不具有“重复”的每个条目的:
SELECT * , count(*) AS entries
FROM `person`
GROUP BY first_name, last_name, work_phone
HAVING entries =1
此查询返回两倍多的结果也有在人表条目。它会像我问的那样返回重复的行,但它会返回每一个10-12次。 – Yottagray 2011-04-28 20:19:37
条目是否有可能具有完全相同的date_modified字段? – piotrm 2011-04-28 20:23:37
是的,他们做...拍摄。 – Yottagray 2011-04-28 20:33:01