如何删除mysql查询中的重复项 [英] How to remove duplicates in mysql query
问题描述
我的数据如下:
org_id org_emp_id name day1 day2 day3 day4 day5 day6 day7 day8 day9 day10 day11 day12 day13 day14 day15 day16 day17 day18 day19 day20 day21 day22 day23 day24 day25 day26 day27 day28 day29 day30
'176' '1' 'New Org NO' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'P' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA'
'176' '1' 'New Org NO' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'P' 'NA' 'NA' 'NA' 'NA'
'176' '1' 'New Org NO' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'P' 'NA' 'NA' 'NA'
'176' '1' 'New Org NO' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'P' 'NA' 'NA'
我想要这样的结果::
org_id org_emp_id name day1 day2 day3 day4 day5 day6 day7 day8 day9 day10 day11 day12 day13 day14 day15 day16 day17 day18 day19 day20 day21 day22 day23 day24 day25 day26 day27 day28 day29 day30
'176' '1' 'New Org NO' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'NA' 'P' 'NA' 'NA' 'NA' 'NA' 'NA' 'P' 'P' 'P' 'P' 'NA'
推荐答案
这不是关于删除重复项,因为第一个结果集中的记录都不是另一个记录的重复项.您希望将所有字段的 'P'
值合并为一条记录.您可以使用 group by 和 max() 函数来达到预期的结果:
This is not about removing duplicates, since none of the records in the first resultset is a duplicate of another one. You want to merge the 'P'
values for all fields into a single record. You can use group by and max() function to achive the expected outcome:
select org_id, org_emp_id, name, max(day1) as day1, ... , max(day30) as day30
from yourtable
group by org_id, org_emp_id, name
您需要列出所有 dayN 字段来代替上述查询中的 ....如果 dayN 字段的所有值都是N/A",则 max() 将返回N/A".如果有P"值,则 max() 将返回P",因为字母 P 的字符代码高于 N.
You need to list all dayN fields in place of the ... in the above query. If for a dayN field all values are 'N/A', then max() will return 'N/A'. If there is a 'P' value, then max() will return the 'P', since letter P has higher character code, than N.
这篇关于如何删除mysql查询中的重复项的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!