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

问题描述

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

查询1-

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

Query 1

查询2-

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

Query 2

所有查询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)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...