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

MySQL选择左连接为空的行

孙佑运
2023-03-14
问题内容

我有这些MySQL表:

表格1:

id | writer
1  | Bob   
2  | Marley
3  | Michael

表2:

user_one | user_two
   1     | 2

而这个查询:

SELECT table1.id FROM table1 LEFT JOIN table2 ON table1.id = table2.user_one

此查询将返回table1的所有行,即1,2,3

我只想选择在左关节中找不到的行。所以它应该只返回ID为ID的行3

我想要与INNER JOIN相反,它将仅选择在联接中找到的行。如何获得相反的结果(例如是否存在左联接),忽略它并移至下一行。希望我明白


问题答案:

您可以使用以下查询:

SELECT  table1.id 
FROM    table1 
        LEFT JOIN table2 
            ON table1.id IN (table2.user_one, table2.user_two)
WHERE   table2.user_one IS NULL;

虽然,根据您的索引,table2您可能会发现两个联接的性能更好:

SELECT  table1.id 
FROM    table1 
        LEFT JOIN table2 AS t1
            ON table1.id = t1.user_one
        LEFT JOIN table2 AS t2
            ON table1.id = t2.user_two
WHERE   t1.user_one IS NULL
AND     t2.user_two IS NULL;


 类似资料:
  • 我有这些MySQL表: 表1: 表2: 而这个查询: 此查询将返回table1中1,2,3的所有行 我只想选择在左关节中找不到的行。因此,它应该只返回id为 我想要一种与内部联接相反的方式,它将只选择联接中找到的行。如何获得相反的方式,比如如果存在左联接,忽略它并移动到下一行。希望我很清楚

  • 问题内容: 我遇到一个问题,当我尝试选择某个列的值为NULL的行时,它将返回一个空集。但是,当我查看phpMyAdmin中的表时,对于大多数行,它表示为null。 我的查询看起来像这样: 每次都清空。 据说有很多地方都确保不会将其存储为“ NULL”或“ null”,而不是实际值,还有一个地方试图仅查找空格(),但没有一个起作用。有人建议不要使用MyISAM并使用innoDB,因为MyISAM无法

  • 问题内容: 在MySQL中,是否只能选择存在某些内容的列? 例如,我有以下查询: 我试图仅选择电话以813开头并且phone2中包含某些内容的行。 问题答案: 比较空字符串的值: 请注意,值解释为。

  • 我想返回每个行,并为和提供空值,如果它们没有。当我执行此查询时,我得到空结果。如果我使用而不是,我得到不正确的结果。如何过滤左连接,以便如果没有匹配,我仍然得到返回的p行与和的空值? 注:我在末尾添加了,仅用于测试目的。

  • 我正在尝试从表中选择一行,其中: 具有最小UUID 未在其他表中引用 但是,当我试图实施第一个约束时,我遇到了问题。 下面是在整数上按预期工作的所有内容:首先,创建如下所示的表: 和 现在,我想选择中具有最低的行,它在中不显示为外键。我想选择中具有并且按预期工作的行: 但是,当我对UUID进行同样的尝试时,最终查询根本无法返回任何内容。请注意,我已经使用这篇文章的答案来定义一种查找最小UUID的方

  • 本文向大家介绍简单谈谈mysql左连接内连接,包括了简单谈谈mysql左连接内连接的使用技巧和注意事项,需要的朋友参考一下 前言 最近忙着开发x省冷链追溯系统,天天干到晚上十一点多才回到家,周末也加班,没啥时间写博客,闲下来再好好写写 业务: sql语句统计出入库数据。 问题: 只统计了X端入库单。 原因: 没有发现X端的数据库中只有入库单是有a字段数据而出库单是没有的,并使用了a字段去inner