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

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


查询 1 -


SELECT `driverName` 

FROM `A Drivers` 

WHERE `driverYear` = 2020

https://img1.sycdn.imooc.com/65352767000195a506460532.jpg

查询 2 -


SELECT `driverA` 

FROM `user_picks` 

WHERE `userID` = 1 

and `raceYear` = 2020

https://img1.sycdn.imooc.com/653527720001648206520475.jpg

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



叮当猫咪
浏览 138回答 2
2回答

回首忆惘然

您可以使用 NOT INSELECT `driverName` FROM `A Drivers` WHERE `driverYear` = 2020    AND `driverName` NOT IN (SELECT `driverA`                             FROM `user_picks`                             WHERE `userID` = 1                             AND `raceYear` = 2020)

波斯汪

我知道您希望两个表中的驱动程序名称不重复。如果是这样,您可以使用union:SELECT `driverName` FROM `A Drivers` WHERE `driverYear` = 2020UNIONSELECT `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`    )
打开App,查看更多内容
随时随地看视频慕课网APP