我有一個查詢,如下所示:修改MySQL查詢,消除重複
SELECT * FROM
(SELECT * FROM persons ORDER BY date DESC) AS p
GROUP BY first_name,last_name,work_phone
如果您還沒有想通了已經,這消除了與重複的姓名和工作電話號碼條目,只留下最近的。在人表中您應該瞭解另一個字段,稱爲DELETED的二進制字段。
問題是,如果有這種性質的重複,我不希望一個行被視爲如果它的DELETED值是TRUE,無論它的日期值是多近。但是,如果某行沒有重複項,則應將其包含在結果中,而不管其具有的是DELETED值。
如果存在重複項,則永遠不會有所有重複項都具有DELETED = TRUE的情況,至少有一項不會被刪除。
難道你實際上已經張貼的SQL運行?我期望它會抱怨,因爲'SELECT *'包含不在'GROUP BY'子句中的字段。 – 2011-06-10 16:02:28
@Don,它在MySQL中運行,你在談論MSSQL,PostgreSQL或那些東西。 – Johan 2011-06-10 16:06:36
是的,查詢運行良好,我目前正在使用它。 – Yottagray 2011-06-10 16:12:00