mysql - 选择每个查询的所有行,除了一行

标签 mysql

我在某些行中遇到了重复值的情况 - 我希望删除除一行之外具有重复值的所有行。

到目前为止,我已经得到了这个,它返回所有具有重复值的行:

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/

相关文章:

mysql - MySQL 查询中的错误是什么?

php - 在插入 [mysql_errno()] 之前检查预先存在的记录的最快方法

php - SQL - 返回最大列值

mysql - Count & GroupBy 函数 Laravel

javascript - jQuery onclick 从 mysql 表中删除行

mysql - 多个同时连接 DotNetCore

php - 查找 MYSQL 查询失败的条件(偏差汇总)

php - 我无法将 1.5MB 以上的图像上传到服务器上的目录

PHP - 将 SQL GROUP BY 作为数组返回?

php - 使用 laravel 获取最后插入的 id