gpt4 book ai didi

MySQL 加入不存在的地方

转载 作者:IT老高 更新时间:2023-10-28 12:53:33 25 4
gpt4 key购买 nike

我有一个连接两个表的 MySQL 查询

  • 选民
  • 家庭

他们加入 voters.household_idhousehold.id

现在我需要做的是修改它,将选民表连接到第三个称为排除的表,沿着 voter.idelimination.voter_id。但是问题是我想排除在淘汰表中有相应记录的选民表中的任何记录。

我如何设计一个查询来做到这一点?

这是我当前的查询:

SELECT `voter`.`ID`, `voter`.`Last_Name`, `voter`.`First_Name`,
`voter`.`Middle_Name`, `voter`.`Age`, `voter`.`Sex`,
`voter`.`Party`, `voter`.`Demo`, `voter`.`PV`,
`household`.`Address`, `household`.`City`, `household`.`Zip`
FROM (`voter`)
JOIN `household` ON `voter`.`House_ID`=`household`.`id`
WHERE `CT` = '5'
AND `Precnum` = 'CTY3'
AND `Last_Name` LIKE '%Cumbee%'
AND `First_Name` LIKE '%John%'
ORDER BY `Last_Name` ASC
LIMIT 30

最佳答案

我可能会使用 LEFT JOIN,即使没有匹配也会返回行,然后您可以通过检查 NULL 仅选择不匹配的行>s.

所以,类似:

SELECT V.*
FROM voter V LEFT JOIN elimination E ON V.id = E.voter_id
WHERE E.voter_id IS NULL

这是否比使用子查询效率更高或更低取决于优化、索引、每个投票者是否可能有多个淘汰等。

关于MySQL 加入不存在的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/750343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com