避免查询中出现重复值

时间:2018-08-28 09:28:19

标签: mysql

以下是我的查询

 SELECT 
        `adggtnz`.`reg04_rpt_animreg`.`hh_id` AS `hh_id`,
        `adggtnz`.`reg04_rpt_animreg`.`animalid` AS `animalid`,
        CONCAT(IFNULL(`adggtnz`.`reg04_rpt_animreg`.`tagsec`,
                        'Without Tag'),
                ' - ',
                `adggtnz`.`reg04_lkpsex`.`sex_des`,
                ' - ',
                IFNULL(`adggtnz`.`reg04_rpt_animreg`.`name`,
                        'Without name'),
                ' - ',
                IFNULL(`adggtnz`.`reg04_rpt_animreg`.`color`,
                        'Without color')) AS `animaldesc`
    FROM
        (`adggtnz`.`reg04_rpt_animreg`
        inner JOIN `adggtnz`.`reg04_lkpsex`)
    WHERE
        (((`adggtnz`.`reg04_rpt_animreg`.`sex` = `adggtnz`.`reg04_lkpsex`.`sex_cod`)
            AND (`adggtnz`.`reg04_rpt_animreg`.`sex` = 2)
            AND (NOT (`adggtnz`.`reg04_rpt_animreg`.`animalid` IN (SELECT DISTINCT
                `adggtnz`.`lng04_rpt_animdisp`.`tagid`FROM `adggtnz`.`lng04_rpt_animdisp`))))
            OR (((TO_DAYS(CURDATE()) - TO_DAYS(`adggtnz`.`reg04_rpt_animreg`.`birthdate`)) >= 558)
            AND (`adggtnz`.`reg04_rpt_animreg`.`sex` = 4))) 
            and reg04_rpt_animreg.animalid like '%000404018293'

问题是查询给出了错误的输出,而不是给我我的动物作为成年雌性,它会将我的记录复制成四个

'0755255400', 'TZN000404018293', '8293 - Mature male - None - Bl'
'0755255400', 'TZN000404018293', '8293 - Mature female - None - Bl'
'0755255400', 'TZN000404018293', '8293 - Male calf - None - Bl'
'0755255400', 'TZN000404018293', '8293 - Female calf - None - Bl'

当我删除reg04_lkpsex的内部联接时,我得到了预期的输出。有人请帮助我修改查询,以便为我提供正确的输出结果

预期产量

'0755255400', 'TZN000404018293', '8293 - Mature female - None - Bl'

2 个答案:

答案 0 :(得分:0)

添加 GROUP BY `adggtnz`.`reg04_rpt_animreg`.`animalid` 它应该很好

答案 1 :(得分:0)

SELECT 
        `adggtnz`.`reg04_rpt_animreg`.`hh_id` AS `hh_id`,
        `adggtnz`.`reg04_rpt_animreg`.`animalid` AS `animalid`,
        CONCAT(IFNULL(`adggtnz`.`reg04_rpt_animreg`.`tagsec`,
                        'Without Tag'),
                ' - ',
                `adggtnz`.`reg04_lkpsex`.`sex_des`,
                ' - ',
                IFNULL(`adggtnz`.`reg04_rpt_animreg`.`name`,
                        'Without name'),
                ' - ',
                IFNULL(`adggtnz`.`reg04_rpt_animreg`.`color`,
                        'Without color')) AS `animaldesc`
FROM
        (`adggtnz`.`reg04_rpt_animreg`
        inner JOIN `adggtnz`.`reg04_lkpsex` on `adggtnz`.`reg04_rpt_animreg`.`sex` = `adggtnz`.`reg04_lkpsex`.`sex_cod`)
WHERE
        (((`adggtnz`.`reg04_rpt_animreg`.`sex` = 2)
            AND (NOT (`adggtnz`.`reg04_rpt_animreg`.`animalid` IN (SELECT DISTINCT
                `adggtnz`.`lng04_rpt_animdisp`.`tagid`FROM `adggtnz`.`lng04_rpt_animdisp`))))
            OR (((TO_DAYS(CURDATE()) - TO_DAYS(`adggtnz`.`reg04_rpt_animreg`.`birthdate`)) >= 558)
            and (`adggtnz`.`reg04_rpt_animreg`.`sex` = 4))) 
            and `adggtnz`.`reg04_rpt_animreg`.`animalid`like '%000404018293'

以上查询为您提供

的输出
'0755255400', 'TZN000404018293', '8293 - Female calf - None - Bl'