在 mysql 中,希望仅显示来自具有不同列名的 2 个表的 2 个查询的唯一项

In mysql , looking to only show unique items from 2 queries of 2 tables with different column names

在 mysql 中,希望仅显示来自具有不同列名的 2 个表的 2 个查询的唯一项目。我可以 运行 它们独立地很好,但我想创建一个列表,我可以在 PHP 的下拉列表中使用。我目前为查询 1 提取了一个列表,它工作正常。但我需要消除查询 2 中的选择。希望这是有道理的,这不是我的职业,而只是一个副业!

查询 1 -

SELECT `driverName` 
FROM `A Drivers` 
WHERE `driverYear` = 2020

查询 2 -

SELECT `driverA` 
FROM `user_picks` 
WHERE `userID` = 1 
and `raceYear` = 2020

所有查询 2 都将存在于查询 1 中。我不想在我的结果中显示它们。

谢谢,史蒂夫

我知道您想要两个表中的驱动程序名称,不要重复。如果是这样,您可以使用 union:

SELECT `driverName` FROM `A Drivers` WHERE `driverYear` = 2020
UNION
SELECT `driverA` FROM `user_picks` WHERE `userID` = 1 AND `raceYear` = 2020

这为您提供了一个结果集,其中只有一个名为 driverName 的列,没有重复项。

另一方面,如果您想要第一个查询的记录在第二个查询的结果中不存在,您可以使用 not exists:

SELECT `driverName` 
FROM `A Drivers` ad 
WHERE 
    `driverYear` = 2020
    AND NOT EXISTS (
        SELECT 1
        FROM `user_picks` up 
        WHERE up.`userID` = 1 AND `up.raceYear` = 2020 and ip.`driverA` = ad.`driverName`
    )

您可以使用 NOT IN

SELECT `driverName` 
FROM `A Drivers` 
WHERE `driverYear` = 2020 
   AND `driverName` NOT IN (SELECT `driverA` 
                            FROM `user_picks` 
                            WHERE `userID` = 1 
                            AND `raceYear` = 2020)