请问 MySQL 怎样实现根据特定条件筛选重复值? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
KagamineLenKai2
V2EX    问与答

请问 MySQL 怎样实现根据特定条件筛选重复值?

  •  1
     
  •   KagamineLenKai2 2016 年 11 月 3 日 2257 次点击
    这是一个创建于 3392 天前的主题,其中的信息可能已经有所发展或是发生改变。

    分公司 | 实时状态 | applyid | 操作人| 合同复核时间 | 合同编号
    上面是我已经写好的查询,其中“合同编号”一列有重复值,我需要去重。
    去重规则为当“合同编号”有重复值,并且“合同复核时间”都为同一天时,保留“合同复核时间”最大的一行。
    当“合同编号”有重复值并且“合同复核时间”不为同一天时,保留每一天的最大值。比如说一个编号在 1 日出现了 2 次,在 2 日出现了 1 次,那么保留 1 日时间最大的一行和 2 日的那行。
    因为权限原因我不能用临时表,不能用子查询,只能用连接查询。请问该怎样按条件去重呢?多谢各位 /(ㄒoㄒ)/~~

    7 条回复    2016-11-03 15:16:50 +08:00
    zakokun
        1
    zakokun  
       2016 年 11 月 3 日
    搜索出来用其他语言处理,处理好了再塞回去
    zachlhb
        2
    zachlhb  
       2016 年 11 月 3 日 via Android
    为什么同一天复核时不用更新而是用新增?
    KagamineLenKai2
        3
    KagamineLenKai2  
    OP
       2016 年 11 月 3 日
    @zachlhb 更新的话就记录不到是否重复复核吧…表不是我建的┑( ̄Д  ̄)┍
    Layne
        4
    Layne  
       2016 年 11 月 3 日
    你的权限允许把查询结果作为子表再进行连接查询吗?

    先把你要查的这张表的数据按合同编号分组,合同复核时间取 MAX ,查询结果作为子表,合同编号和最大合同复合时间作为连接条件,再左连接这张表补充其他字段。

    当然合同编号和合同复核时间两个字段要能确定一条记录。
    KagamineLenKai2
        5
    KagamineLenKai2  
    OP
       2016 年 11 月 3 日
    @zakokun 然而我不是程序员,只是一个破做表的 /(ㄒoㄒ)/~~ 头像是 Len 吗?
    KagamineLenKai2
        6
    KagamineLenKai2  
    OP
       2016 年 11 月 3 日
    @Layne 好,我试一下……
    KagamineLenKai2
        7
    KagamineLenKai2  
    OP
       2016 年 11 月 3 日
    在 CSDN 上受人指点惹,这里把 SQL 贴出来,希望能帮到一些人

    作者:音改二
    链接: https://www.zhihu.com/question/52243984/answer/129648873
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

    SELECT
    apply.org_name AS 分公司,
    n.statusdes AS 实时状态,
    operation_log.apply_id,
    operation_log.operator_name AS 合同复核操作人,
    max(
    operation_log.operation_time
    ) AS 合同复核时间,
    contract.contract_number AS 合同编号,
    contract.actual_loan_time AS 实际放款时间,
    contract.loan_amount AS 合同金额
    FROM
    operation_log
    LEFT JOIN contract ON contract.apply_id = operation_log.apply_id
    LEFT JOIN apply ON apply.apply_id = operation_log.apply_id
    LEFT JOIN (
    SELECT
    group_concat(
    DISTINCT c.status_code SEPARATOR '||'
    ) AS statussum,
    c.is_in_node,
    c.apply_id,
    group_concat(
    DISTINCT c.status_name SEPARATOR '||'
    ) AS statusdes,
    group_concat(
    DISTINCT c.operator_name SEPARATOR '||'
    ) AS operatornames
    FROM
    node_record c
    WHERE
    c.is_in_node = 1
    AND c.is_valid = 1
    GROUP BY
    c.apply_id
    ) n ON apply.apply_id = n.apply_id
    WHERE
    operation_time >= "2016-11-1"
    AND before_status_name = "合同复核中"
    AND end_status_name = "合同复核完成"
    AND operation_log.node_code = "REVIEW"
    AND apply.is_ex_apply = '1'
    AND apply.borrowing_type = '1'
    AND operation_log.operator_name NOT LIKE "%测试%"
    GROUP BY
    apply.org_name,
    n.statusdes,
    operation_log.apply_id,
    operation_log.operator_name,
    DATE(
    operation_log.operation_time
    ),
    contract.contract_number,
    contract.actual_loan_time,
    contract.loan_amount
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2008 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 14:30 PVG 22:30 LAX 06:30 JFK 09:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86