[英]Remove Duplicates in UNION Result Mysql
I have some tables and i create query using UNION to join that tables to one table. 我有一些表,我使用UNION创建查询以将该表连接到一个表。 But i have some problems, the result have duplicate values.
但是我有一些问题,结果有重复的值。
Here is the result of my UNION : 这是我的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. 删除
type
和is_delete
列具有NULL
值并重复的行。 How to clean it up?? 如何清理? Thank you..
谢谢..
Seems like the rest of the fields are like a "PK" for the resultset. 似乎其余字段就像结果集的“ PK”。 This will use 'type' and 'is_delete' values when present, or null in other case.
如果存在,它将使用'type'和'is_delete'值,在其他情况下将使用null。
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.