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