看起来我们的偏好表中可能有一些重复的值,因此我想删除每个用户的所有重复条目,但保留最近的一条。我已经花了很长时间试图想出一个解决方案,但我一直在打转。我尝试过max、group by、子查询等方法。删除最高的很容易,但不是除了最高的其他所有内容。特别是对于每个用户。
因此,在数据库中,我可能会有:
id : name: value : userId
1 : sortOrder: Asc : 1
2 : sortOrder: Desc : 1
3 : sortOrder: Asc : 2
4 : something: value2 : 1
在这种情况下,我希望删除第一行,因为它是用户1的重复行,并具有最高的ID,同时保留所有其它列。
所以我知道至少需要使用group by子查询,但我就是想不出来。到目前为止,我只有:
SELECT
MAX(id),
name
FROM
preference
GROUP BY
name
这个查询可以给我一个想要保留的列表,但是对于每个用户仍然会漏掉一些。所以如果我对于每个用户都有这个列表,我希望有相反的结果。不过,我觉得即便在子查询中使用<>也不可行。
我的最终目标是删除所有重复条目中ID较低的同一用户。