我的 MySQL 查询 (UNION) 有什么问题?

What is wrong with my MySQL query (UNION)?

我希望你能把我带到这里。我正在使用 PMS 系统,我想 运行 一个简单的 SELECT 语句来根据客户的包裹到达和交易类型获取密码列表。 'transferConfirmation' table 已经有客户 ID 和密码并为每个实例显示一行但是由于某种原因,当我使用以下查询时:

SELECT `tc`.`transferID` AS `transferID`,
       `c`.`firstName` AS `firstName`,
       `c`.`lastName` AS `lastName`,
       `tc`.`secretCode` AS `secretCode`,
       'Purchase Order' AS `transactionType`
FROM (((((`db`.`transferconfirmation` `tc`
          JOIN `db`.`customer` `c` on((`tc`.`customerID` = `c`.`customerID`)))
         JOIN `db`.`transfer` `t` on((`t`.`transferID` = `tc`.`transferID`)))
        JOIN `db`.`transferentry` `te` on((`t`.`transferID` = `te`.`transferID`)))
       JOIN `db`.`purchaseorder` `po` on((`te`.`referenceID` = `po`.`purchaseOrderID`)))
      JOIN `db`.`purchaseorderentry` `poe` on(((`po`.`purchaseOrderID` = `poe`.`purchaseOrderID`)
                                               AND (`te`.`referenceEntryID` = `poe`.`purchaseOrderEntryID`))))
WHERE (`poe`.`collectionStatus` = 0)
UNION ALL
SELECT `tc`.`transferID` AS `transferID`,
       `c`.`firstName` AS `firstName`,
       `c`.`lastName` AS `lastName`,
       `tc`.`secretCode` AS `secretCode`,
       'Shipping Order' AS `transactionType`
FROM (((((`db`.`transferconfirmation` `tc`
          JOIN `db`.`customer` `c` on((`tc`.`customerID` = `c`.`customerID`)))
         JOIN `db`.`transfer` `t` on((`t`.`transferID` = `tc`.`transferID`)))
        JOIN `db`.`transferentry` `te` on((`t`.`transferID` = `te`.`transferID`)))
       JOIN `db`.`shippingorder` `so` on((`te`.`referenceID` = `so`.`shippingOrderID`)))
      JOIN `db`.`shippingorderentry` `soe` on(((`so`.`shippingOrderID` = `soe`.`shippingOrderID`)
                                               AND (`te`.`referenceEntryID` = `soe`.`shippingOrderEntryID`))))
WHERE (`soe`.`collectionstatus` = 0)

我不断得到重复数据的结果,唯一不同的是交易。我想我的问题是,如果密码已被选择一次,我如何防止任何其他行显示相同的代码。

使用 UNION 运算符。 UNION 运算符将从每个查询中删除重复记录(UNION ALL 会保留它们)。

SELECT transferID, firstName, lastName, secretCode,
    'Purchase Order' AS transactionType
FROM ...
UNION
SELECT transferID, firstName, lastName, secretCode,
    'Purchase Order' AS transactionType
FROM ...