为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
叮当猫咪 2023-10-22 21:44:04
在 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 中。我不想在结果中显示它们。
查看完整描述

2 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

您可以使用 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)


查看完整回答
反对 回复 2023-10-22
?
波斯汪

TA贡献1811条经验 获得超4个赞

我知道您希望两个表中的驱动程序名称不重复。如果是这样,您可以使用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`

    )


查看完整回答
反对 回复 2023-10-22
  • 2 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号