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

标签 mysql join union

我希望你能带我来这里。我正在开发一个 PMS 系统,我想运行一个简单的 SELECT 语句,根据客户的包裹已到达和交易类型来获取他们的密码列表。 “transferConfirmation”表已经具有客户 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 ...

关于mysql - 我的 MySQL 查询 (UNION) 有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34918310/

相关文章:

mysql - 什么时候应该在 MySQL 表中使用 "NOT NULL",有什么好处吗?

mysql - SQL SELECT 来自多个表或 JOIN

php - MYSQL : select count with union three table

sql - SQL Server 2005 中的 UNION ALL 性能

mysql - Docker - 无法连接到 MySQL 实例。怎么解决呢?

mysql - 两个索引的内部连接的 Big-Oh 性能

sql - Nested sql joins process 解释需要

MySQL 试图同时使用 INNER JOIN 和 UNION?

sql - 使用加载数据文件将 CSV 导入 MySQL

Grails GORM : Change foreign key column name