簡體   English   中英

刪除UNION結果MySQL中的重復項

[英]Remove Duplicates in UNION Result Mysql

我有一些表,我使用UNION創建查詢以將該表連接到一個表。 但是我有一些問題,結果有重復的值。

這是我的UNION的結果:

在此處輸入圖片說明

這是我的查詢:

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;

這是我的預期結果:

在此處輸入圖片說明

刪除typeis_delete列具有NULL值並重復的行。 如何清理? 謝謝..

似乎其余字段就像結果集的“ PK”。 如果存在,它將使用'type'和'is_delete'值,在其他情況下將使用null。
這有點棘手(可能是在子查詢內部進行更好的查詢分析)

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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM