当前位置: 首页 > 面试题库 >

MySQL联接不存在的地方

巴学潞
2023-03-14
问题内容

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

  • 选民
  • 住户

他们加入voters.household_idhousehold.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

问题答案:

我可能会使用LEFT JOIN,即使没有匹配项也会返回行,然后可以通过检查NULLs 仅选择不匹配的行。

因此,类似:

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

与使用子查询相比,效率更高还是更低,取决于优化,索引,每个选民是否有多个消除对象等。



 类似资料:
  • 问题内容: 我尝试插入新用户(如果用户表中不存在该用户),我尝试了此查询,但收到错误: 如果不存在,如何插入用户? 错误: 谢谢, 问题答案: 用途: 我可以这样写: 但是更好的方法可能只是放入一个唯一索引,以便数据库保护数据:

  • 问题内容: 想象两个表(A和B): 现在,我想从A中删除B中不存在的记录,例如,从A中删除1、6和4。 我最初的想法是,您可以“否定”联接的结果。 问题答案: 我假设这些列被命名为。

  • 问题内容: 我有一个网站,该网站将选项存储在多个表中,并根据单个页面提取所有相关选项。此刻,我结束了这样的查询:。这确实不是一个坏问题,但是我必须逐个遍历每个选择结果。 我想将所有这些提取到单个网格中,然后执行类似的操作 如果使用类似的查询,则会结束所有可能的行组合(第一个foo第一栏,第二个foo第二栏,第二个foo第一栏,第二个foo第二栏等)。 有没有一种方法可以执行这样的选择,并且每个元素

  • 问题内容: 假设我们有下表t1和t2: 我们希望找到以下结果: 这基本上是右连接与左连接的并集。以下代码有效,但感觉很笨拙: 有没有更好的方法来实现这一目标? 问题答案:

  • 问题内容: 我对此有疑问,我希望这是可能的。 我有一个来自wordpress的表,用于存储发布的元数据,因此无法(轻松)更改列和字段数据。 因此表结构为 post_id meta_key meta_value meta键存储字段名称和meta_value,即该字段的值。我需要根据帖子ID对它们进行分组,以便可以在两个字段之间进行比较。我尝试了各种! 因此数据如下: 我已经完成了GROUP_CONC

  • 问题内容: 因此,我正在尝试获取本地网络中本机的IP地址(应该是)。 我的初衷是使用这样的东西: 但它只会返回,这是正确的,但对我却没有太大帮助。 我四处搜索并找到了这个答案http://codingdict.com/questions/121424,它仅创建了到某些网页的- connection(例如“ google.com”),并从套接字获取了本地主机地址: 这确实适用于我的机器(返回),但需