我在某些行中遇到了重复值的情况 - 我希望删除除一行之外具有重复值的所有行。
到目前为止,我已经得到了这个,它返回所有具有重复值的行:
SELECT nid, vid, title, hash
FROM node_revision nr
WHERE EXISTS
(
SELECT 1
FROM node_revision nr
WHERE nr.hash = nr.hash
LIMIT 1, 1
)
但我想获得除视频最低的以外的所有内容。我该如何去做呢?
例如,数据:
nid vid title hash
2065 2081 First news story 77c0f020c160c108ed0f38e572e0ea64
2065 2082 First news story 77c0f020c160c108ed0f38e572e0ea64
2065 2083 First news story 77c0f020c160c108ed0f38e572e0ea64
2065 2084 First news story 77c0f020c160c108ed0f38e572e0ea64
我想选择除 2081 之外的所有内容。
最佳答案
SELECT nr.nid, nr.vid, nr.title, nr.hash
FROM node_revision nr
WHERE EXISTS(
SELECT 1
FROM node_revision nri
WHERE nri.vid < nr.vid
AND nri.hash = nr.hash
)
或者用简单的英语来说:“给我所有行,其中另一行具有较低的 vid 和相同的哈希值”
关于mysql - 选择每个查询的所有行,除了一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24913559/