美文网首页
union 与 union all 区别

union 与 union all 区别

作者: 我的名字叫浩仔 | 来源:发表于2017-03-28 09:19 被阅读6次
    union all 展示所有结果
    union     展示去重后的结果
    
    • union all

    (SELECT
    sc.IntelUserCode,
    sc.StartDate,
    sc.EndDate,
    sc.DepartmentOfDuty,
    sc.Duty,
    sc.DutyStatus,
    sc.BizType,
    sc.TaskCode,
    sc.ApproveStatus,
    sc.Operator,
    sc.Status,
    bizname(sc.DepartmentOfDuty) AS DepartmentOfDutyName,
    bizname(sc.Duty) AS Duty,
    bizname(sc.DutyStatus) AS DutyStatus,
    group_concat(ua.AttachmentCode) AS AttachmentCode
    FROM StudentCadres sc
    JOIN userattachment ua ON sc.IntelUserCode = ua.IntelUserCode AND ua.BizType = 'StudCadres'
    WHERE
    sc.Status = '1' AND sc.IntelUserCode = '7b9374f5-d21d-416e-bc1b-f632cd6542ee' AND ApproveStatus IN ('0', '3', '4')
    GROUP BY
    sc.IntelUserCode,
    sc.StartDate,
    sc.EndDate,
    sc.DepartmentOfDuty,
    sc.Duty,
    sc.DutyStatus,
    sc.BizType,
    sc.TaskCode,
    sc.ApproveStatus,
    sc.Operator,
    sc.Status)
    UNION ALL
    (SELECT
    sc.IntelUserCode,
    sc.StartDate,
    sc.EndDate,
    sc.DepartmentOfDuty,
    sc.Duty,
    sc.DutyStatus,
    sc.BizType,
    sc.TaskCode,
    sc.ApproveStatus,
    sc.Operator,
    sc.Status,
    bizname(sc.DepartmentOfDuty) AS DepartmentOfDutyName,
    bizname(sc.Duty) AS Duty,
    bizname(sc.DutyStatus) AS DutyStatus,
    group_concat(ua.AttachmentCode) AS AttachmentCode
    FROM un_StudentCadres sc
    JOIN userattachment ua ON sc.IntelUserCode = ua.IntelUserCode AND ua.BizType = 'StudCadres'
    WHERE sc.Status = '1' AND sc.IntelUserCode = '7b9374f5-d21d-416e-bc1b-f632cd6542ee' AND ApproveStatus IN ('1', '2')
    GROUP BY
    sc.IntelUserCode,
    sc.StartDate,
    sc.EndDate,
    sc.DepartmentOfDuty,
    sc.Duty,
    sc.DutyStatus,
    sc.BizType,
    sc.TaskCode,
    sc.ApproveStatus,
    sc.Operator,
    sc.Status)

    Explain:
    id select_type table partitions type possible_keys key key_len ref rows filterd Extra
    1 PRIMARY sc ref IntelUserCode IntelUserCode 108 const 1 5 Using index condition; Using where; Using filesort
    1 PRIMARY ua ref IntelUserCode IntelUserCode 108 const 2 10 Using where; Using index
    2 UNION ua ref IntelUserCode IntelUserCode 108 const 2 10 Using where; Using index; Using temporary; Using filesort
    2 UNION sc ref IntelUserCode IntelUserCode 108 const 1 100 Using index condition; Using where
    • union

    (SELECT
    sc.IntelUserCode,
    sc.StartDate,
    sc.EndDate,
    sc.DepartmentOfDuty,
    sc.Duty,
    sc.DutyStatus,
    sc.BizType,
    sc.TaskCode,
    sc.ApproveStatus,
    sc.Operator,
    sc.Status,
    bizname(sc.DepartmentOfDuty) AS DepartmentOfDutyName,
    bizname(sc.Duty) AS Duty,
    bizname(sc.DutyStatus) AS DutyStatus,
    group_concat(ua.AttachmentCode) AS AttachmentCode
    FROM StudentCadres sc
    JOIN userattachment ua ON sc.IntelUserCode = ua.IntelUserCode AND ua.BizType = 'StudCadres'
    WHERE
    sc.Status = '1' AND sc.IntelUserCode = '7b9374f5-d21d-416e-bc1b-f632cd6542ee' AND ApproveStatus IN ('0', '3', '4')
    GROUP BY
    sc.IntelUserCode,
    sc.StartDate,
    sc.EndDate,
    sc.DepartmentOfDuty,
    sc.Duty,
    sc.DutyStatus,
    sc.BizType,
    sc.TaskCode,
    sc.ApproveStatus,
    sc.Operator,
    sc.Status)
    UNION
    (SELECT
    sc.IntelUserCode,
    sc.StartDate,
    sc.EndDate,
    sc.DepartmentOfDuty,
    sc.Duty,
    sc.DutyStatus,
    sc.BizType,
    sc.TaskCode,
    sc.ApproveStatus,
    sc.Operator,
    sc.Status,
    bizname(sc.DepartmentOfDuty) AS DepartmentOfDutyName,
    bizname(sc.Duty) AS Duty,
    bizname(sc.DutyStatus) AS DutyStatus,
    group_concat(ua.AttachmentCode) AS AttachmentCode
    FROM un_StudentCadres sc
    JOIN userattachment ua ON sc.IntelUserCode = ua.IntelUserCode AND ua.BizType = 'StudCadres'
    WHERE sc.Status = '1' AND sc.IntelUserCode = '7b9374f5-d21d-416e-bc1b-f632cd6542ee' AND ApproveStatus IN ('1', '2')
    GROUP BY
    sc.IntelUserCode,
    sc.StartDate,
    sc.EndDate,
    sc.DepartmentOfDuty,
    sc.Duty,
    sc.DutyStatus,
    sc.BizType,
    sc.TaskCode,
    sc.ApproveStatus,
    sc.Operator,
    sc.Status)

    Explain:
    id select_type table partitions type possible_keys key key_len ref rows filterd Extra
    1 PRIMARY sc ref IntelUserCode IntelUserCode 108 const 1 5 Using index condition; Using where; Using filesort
    1 PRIMARY ua ref IntelUserCode IntelUserCode 108 const 2 10 Using where; Using index
    2 UNION ua ref IntelUserCode IntelUserCode 108 const 2 10 Using where; Using index; Using temporary; Using filesort
    2 UNION sc ref IntelUserCode IntelUserCode 108 const 1 100 Using index condition; Using where
    UNION RESULT <union1,2> ALL Using temporary

    union 比 union all 多用了一个临时表存储去重后的数据

    相关文章

      网友评论

          本文标题:union 与 union all 区别

          本文链接:https://www.haomeiwen.com/subject/pnodottx.html