如何删除mysql查询中的重复项

时间:2016-04-07 10:02:41

标签: mysql

我的数据如下:

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'

2 个答案:

答案 0 :(得分:0)

在查询语句中使用DISTINCT, 例如:     从your_table中选择DISTINCT Id,名称,年龄

表示DISTINCT Id,它可以避免表格中出现重复的ID

答案 1 :(得分:0)

这不是删除重复项,因为第一个结果集中的所有记录都不是另一个记录的副本。您希望将所有字段的'P'值合并为单个记录。您可以使用group by和max()函数来实现预期结果:

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.