帕秋莉_诺蕾姬 2020-05-17 22:37 采纳率: 50%
浏览 328
已采纳

如何找到以及清除一个数据表中,两个列中数值相同的数据行

比如说一个数据库有id,name,score三列,其中存在name与score均相同的两行或多行。如何清除name与score都相同的重复行呢

  • id name score
  • 1 homura 100
  • 2 madoka 100
  • 3 sayaka 80
  • 4 sayaka 80
  • 5 homura 99 比如这个例子,需要查找到name与score都相同的行(sayaka 80)并且清除 怎么写sql语句才能够达到找到这些的效果并清除掉重复项仅保留一个啊(查找的语句和清除的语句希望分别给出的说,分可以加- -)
  • 写回答

5条回答

  • 关注

    先找出相同行的id,sql如下:

    SELECT
        DISTINCT(t_s.id)
    FROM
        `t_score` t_s
        INNER JOIN ( SELECT * FROM t_score ) AS ts ON t_s.NAME = ts.NAME 
        AND t_s.score = ts.score 
        AND t_s.id != ts.id
        order by t_s.id asc;
    
    

    如果删除的话,在这个基础上,再加一层删除操作:

    DELETE 
    FROM
        t_score 
    WHERE
        id IN (
        SELECT
            a.id 
        FROM
            (
            SELECT DISTINCT
                ( t_s.id ) AS id 
            FROM
                `t_score` t_s
                INNER JOIN ( SELECT * FROM t_score ) AS ts ON t_s.NAME = ts.NAME 
                AND t_s.score = ts.score 
                AND t_s.id != ts.id 
            ORDER BY
                t_s.id ASC 
            ) a 
        );
    

    亲测有效,希望可以帮助你!(不要忘了给分哦!)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多