我有一个MySQL查询联接两个表MySQL的加入凡NOT EXISTS
- 选民
家庭 他们加入对voters.household_id和household.id
现在我需要做的是将选民表加入到名为淘汰的第三个表中,沿voter.id和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
+1返回比子查询更快 – ravi404 2012-11-16 15:07:49
+1在高负载和子查询时+1快得多+如果U可以做JOIN而不是子查询 - 只要JOIN对于分析器来说简单得多。 另一个有用的例子是,如果在右表中有一些行或者没有人,U可能想要得到结果:`SELECT V. * FROM voter V LEFT JOIN elimination E ON V.id = E.voter_id OR E .voter_id IS NULL`例如:如果U不想将右侧表中的所有记录存储在左侧的每一行中。 – 2016-07-04 05:45:50