我有这些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为3
我想要一种与内部联接相反的方式,它将只选择联接中找到的行。如何获得相反的方式,比如如果存在左联接,忽略它并移动到下一行。希望我很清楚
下面是一个查询,它只返回在表2
的user_one
和user_two
两列中未找到对应项的行:
SELECT T1.*
FROM table1 T1
LEFT OUTER JOIN table2 T2A ON T2A.user_one = T1.id
LEFT OUTER JOIN table2 T2B ON T2B.user_two = T1.id
WHERE T2A.user_one IS NULL
AND T2B.user_two IS NULL
每列有一个连接(user_one
和user_two
),查询只返回没有匹配连接的行。
希望这对你有帮助。
如果您不想从table2
返回任何列,最好的方法之一是使用not EXISTS
SELECT table1.id
FROM table1 T1
WHERE
NOT EXISTS (SELECT *
FROM table2 T2
WHERE T1.id = T2.user_one
OR T1.id = T2.user_two)
从语义上讲,这表示您要查询的内容:选择第二个表中没有匹配记录的每一行。
MySQL针对EXISTS
进行了优化:一旦找到第一条匹配的记录,它就会返回。
您可以使用以下查询:
SELECT table1.id
FROM table1
LEFT JOIN table2
ON table1.id IN (table2.user_one, table2.user_two)
WHERE table2.user_one IS NULL;
不过,根据表2上的索引,您可能会发现两个联接的性能更好:
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