我有一个连接两个表的 MySQL 查询
他们加入voters.household_id
and household.id
.
现在我需要做的是修改它,将选民表连接到第三个表(称为消除),voter.id
and elimination.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
这比使用子查询效率更高还是更低取决于优化、索引、每个投票者是否有可能进行多次淘汰等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)