我的查询如下:
SELECT * FROM
(SELECT * FROM persons ORDER BY date DESC) AS p
GROUP BY first_name,last_name,work_phone
如果您还没有弄明白,这会删除名称和工作电话号码重复的条目,只留下最新的条目。你应该知道的person表中有另一个字段,一个名为DELETED的二进制字段。
问题是,如果存在这种性质的重复,我不希望在其DELETED值为TRUE时考虑行,而不管其日期值的最近值。但是,如果一行没有重复,则无论它有多少DELETED值,它都应该包含在结果中。
如果存在重复项,则永远不会出现所有重复项都有DELETED = TRUE的情况,至少有一个不会被删除。
答案 0 :(得分:2)
SELECT * FROM
(SELECT * FROM persons ORDER BY deleted ASC, date DESC) AS p
GROUP BY first_name,last_name,work_phone
答案 1 :(得分:0)
以下是我理解问题的方法:
persons
表格包含字段first_name
,last_name
,work_phone
,deleted
以及其他一些字段。以下是我将如何解决问题的草图:
coalesce
从第二个或第三个子查询中提取值,取其为空值。