简体   繁体   中英

Remove Duplicates in UNION Result Mysql

I have some tables and i create query using UNION to join that tables to one table. But i have some problems, the result have duplicate values.

Here is the result of my UNION :

在此处输入图片说明

And here is my Query :

SELECT * FROM (
SELECT d.type, d.is_delete, a.CUSTOMER_ID, a.ANI, a.FULL_NAME, a.ALAMAT, 
a.CITY, a.PROVINCE_DESC, a.ZIP_CODE, a.PSTN, a.MOBILE, a.EMAIL, 
b.location_id, c.INSTALL_ADDR, c.PSTN as UPD_PSTN, c.MOBILE as UPD_MOBILE 
FROM dailybussolbackup.daily_bussol_20150101 a 
LEFT JOIN collectionticket.ticket_location_kcp b ON a.CUSTOMER_ID = b.CUSTOMER_ID 
LEFT JOIN collectionticket.ticket_customers c ON a.CUSTOMER_ID = c.CUSTOMER_ID 
LEFT JOIN ticket_schedule_complaint d ON d.customer_id = a.CUSTOMER_ID
WHERE b.location_id = '3'
      UNION
SELECT d.type, d.is_delete, a.CUSTOMER_ID, a.ANI, a.FULL_NAME, a.ALAMAT, 
a.CITY, a.PROVINCE_DESC, a.ZIP_CODE, a.PSTN, a.MOBILE, a.EMAIL, 
b.location_id, c.INSTALL_ADDR, c.PSTN as UPD_PSTN, c.MOBILE as UPD_MOBILE 
FROM dailybussolbackup.daily_bussol_20150101 a 
LEFT JOIN collectionticket.ticket_location_kcp b ON a.CUSTOMER_ID = b.CUSTOMER_ID 
LEFT JOIN collectionticket.ticket_customers c ON a.CUSTOMER_ID = c.CUSTOMER_ID 
LEFT JOIN ticket_schedule_detail d ON d.cust_id = a.CUSTOMER_ID
LEFT JOIN ticket_schedule e ON e.id = d.schedule_id
WHERE b.location_id = '3'
) as data
WHERE data.is_delete = 'false' OR data.is_delete IS NULL;

Here is my Expected Result :

在此处输入图片说明

Remove the row that type and is_delete column have NULL value and duplicate. How to clean it up?? Thank you..

Seems like the rest of the fields are like a "PK" for the resultset. This will use 'type' and 'is_delete' values when present, or null in other case.
It is a bit tricky (may be a better query analyzing inside subquery)

SELECT 
    MAX(type) as type, MAX(is_delete) as is_delete
    CUSTOMER_ID, ANI, FULL_NAME, ALAMAT, 
    CITY, PROVINCE_DESC, ZIP_CODE, PSTN, MOBILE, EMAIL, 
    location_id, INSTALL_ADDR, UPD_PSTN, UPD_MOBILE
FROM (
    SELECT d.type, d.is_delete, a.CUSTOMER_ID, a.ANI, a.FULL_NAME, a.ALAMAT, 
    a.CITY, a.PROVINCE_DESC, a.ZIP_CODE, a.PSTN, a.MOBILE, a.EMAIL, 
    b.location_id, c.INSTALL_ADDR, c.PSTN as UPD_PSTN, c.MOBILE as UPD_MOBILE 
    FROM dailybussolbackup.daily_bussol_20150101 a 
    LEFT JOIN collectionticket.ticket_location_kcp b ON a.CUSTOMER_ID = b.CUSTOMER_ID 
    LEFT JOIN collectionticket.ticket_customers c ON a.CUSTOMER_ID = c.CUSTOMER_ID 
    LEFT JOIN ticket_schedule_complaint d ON d.customer_id = a.CUSTOMER_ID
    WHERE b.location_id = '3'
          UNION
    SELECT d.type, d.is_delete, a.CUSTOMER_ID, a.ANI, a.FULL_NAME, a.ALAMAT, 
    a.CITY, a.PROVINCE_DESC, a.ZIP_CODE, a.PSTN, a.MOBILE, a.EMAIL, 
    b.location_id, c.INSTALL_ADDR, c.PSTN as UPD_PSTN, c.MOBILE as UPD_MOBILE 
    FROM dailybussolbackup.daily_bussol_20150101 a 
    LEFT JOIN collectionticket.ticket_location_kcp b ON a.CUSTOMER_ID = b.CUSTOMER_ID 
    LEFT JOIN collectionticket.ticket_customers c ON a.CUSTOMER_ID = c.CUSTOMER_ID 
    LEFT JOIN ticket_schedule_detail d ON d.cust_id = a.CUSTOMER_ID
    LEFT JOIN ticket_schedule e ON e.id = d.schedule_id
    WHERE b.location_id = '3'
) as data
GROUP BY
    CUSTOMER_ID, ANI, FULL_NAME, ALAMAT, 
    CITY, PROVINCE_DESC, ZIP_CODE, PSTN, MOBILE, EMAIL, 
    location_id, INSTALL_ADDR, UPD_PSTN, UPD_MOBILE
WHERE is_delete = 'false' OR is_delete IS NULL;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM