问题标签 [anti-join]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
249 浏览

sql - 在 SQL Server 中查找丢失的电子邮件

我正在尝试做我已经做了一百万次的事情,但它不起作用,谁能告诉我为什么?

我有一张表格供发送简历的人使用,里面有他们的电子邮件地址...

我想知道这些人中是否有人没有在网站上注册。aspnet_Membership 表包含在网站上注册的所有人员。

有 9472 名求职者,拥有唯一的电子邮件地址。

此查询产生 1793 个结果:

这表明应该有 7679 (9472-1793) 封未在网站上注册的人的电子邮件。由于其中 1793 个 DID 匹配,我希望其余的不匹配......但是当我为此进行查询时,我什么也没得到!

为什么这个查询什么也没给我???

我不知道这怎么可能行不通-它基本上说“向我显示所有在求职者表中的电子邮件,但不在 aspnet_Membership 表中......

0 投票
11 回答
67029 浏览

sql - 如何查找未加入的记录?

我有两个连接在一起的表。

A有很多B

通常你会这样做:

从a中获取所有在b中有记录的记录。

如何仅获取 a 中没有 b 中任何内容的记录?

0 投票
4 回答
1623 浏览

oracle - Oracle Anti-Join 执行计划问题

我们有两个这样的表:

有定义的索引

  • 事件(id)(PK)
  • ProcessedEvent (event_id, 进程)

第一个代表应用程序中的事件。

第二个表示某个事件被某个进程处理的事实。有很多进程需要处理某个事件,因此第二个表中的每个条目对应第一个表中的多个条目。

为了找到所有需要处理的事件,我们执行以下查询:

统计数据是最新的

由于大多数事件都被处理了,我认为最好的执行计划应该是这样的

  • 对 ProcessedEvent 索引进行全索引扫描
  • 对事件索引进行全索引扫描
  • 两者之间的反连接
  • 与其余的表访问
  • 筛选

相反,Oracle 执行以下操作

  • 对 ProcessedEvent 索引进行全索引扫描
  • 事件表上的全表扫描
  • 过滤事件表
  • 两组之间的反连接

通过索引提示,我让 Oracle 执行以下操作:

  • 对 ProcessedEvent 索引进行全索引扫描
  • 对事件索引进行全索引扫描
  • 事件表上的表访问
  • 过滤事件表
  • 两组之间的反连接

恕我直言,这真的很愚蠢。

所以我的问题是:oracle 坚持提前访问表的原因可能是什么?


补充:性能很差。我们通过仅选择 Event.IDs 然后“手动”获取所需的行来解决性能问题。但这当然只是一种解决方法。

0 投票
2 回答
7742 浏览

database - Postgres ANTI-JOIN 需要 Table-Scan?

我需要在同一张表上的 ANTI-JOIN(不存在 SELECT something from table.../left join table WHERE table.id IS NULL)。Acutally 我有一个索引来服务不存在的问题,但是查询规划器选择使用位图堆扫描。

该表有 1 亿行,因此进行堆扫描会搞砸...

如果 Postgres 可以与这些指标进行比较,那将是非常快的。Postgres 是否必须访问该 ANTI-JOIN 的表?

我知道必须在某个时候访问该表才能为 MVCC 服务,但为什么这么早呢?NOT EXISTS 只能由表来修复,否则它可能会遗漏一些东西?

0 投票
2 回答
12478 浏览

mysql - 如何通过 JOIN 从另一个表中查找不存在的数据?

我有两个表 TABLE1 看起来像:

和 TABLE2 w/c 看起来像:

我想通过将TABLE1与进行比较来获得不存在的名称TABLE2

所以基本上,我必须得到第二行,w/c 有一个 NN 中不存在的名称,TABLE2输出应该如下所示:

我已经尝试过了,但它不起作用:

它仍在获取现有记录。

0 投票
5 回答
146 浏览

mysql - 使用一个表中的信息来查找该信息是否存在于另一个表中

我有 2 张桌子:

广告:

分配广告:

如你看到的; 广告 1,2 和 3 都分配到一个位置。我需要的是一个查询,它获取表ads中未分配的所有行assigned_ads

0 投票
4 回答
9096 浏览

sql - SELECT 语句比较多个表中的多个字段

我必须有两个单独的表(表 A 和表 B)。表 A 有大约 15 列,唯一重要的是 [First Name] 和 [Last Name]。表 B 有更多的列,而我唯一关心的是 FirstName 和 LastName(表 B 的字段不包含空格,而表 A 则包含空格)。

他们都在 Access 中,我正在尝试编写一个查询,该查询将从表 B 中找到不在表 A 中的人。我对 SQL 非常业余,但这是我想出的:

它不喜欢我尝试为表 B 中的名字 + 姓氏创建别名,但我不知道我该怎么做。

0 投票
1 回答
136 浏览

mysql - 一个针对三个表的 MySQL 查询:有多少来自 A 的表不在 B 或 C 中?

我在制定 MySQL 查询来执行以下任务时遇到问题,尽管我在这里看到过类似的查询,但它们与这个查询有很大的不同,足以让我尝试转置它们。问题是(相当)简单的陈述。我有三个表,“成员”、“dog_shareoffered”和“dog_sharewanted”。会员可能有零个、一个或多个关于他们想要出售或想要购买的东西的广告,详细信息连同放置广告的会员的 ID 一起存储在相应的 offer 或 Want 表中。列“id”对成员是唯一的,并且对所有三个表都是通用的。我想要的查询是询问有多少成员没有在任一表中放置广告。

我已经尝试了几种方法来问这个问题。我能得到的最接近的是不会崩溃的查询!(无论如何,我都不是 MySQL 专家)。以下是我从其他示例中收集到的内容,但它返回零行,我知道结果应该大于零。

这个查询看起来很容易理解,不像我见过的'JOIN's,但我猜我可能需要某种加入,但在这种情况下会怎么样?

0 投票
4 回答
96159 浏览

sql - 检查一个项目是否在另一个表中不存在

我的桌子是这样设置的:

我想构造一个 select 语句,它将显示在 value_search 中没有条目的所有进程名称(及其各自的 id_string)。

进程表中的 id_string 可以为null,并且仍然有名称,但如果可能,需要排除这些名称。value_search 中的 id_string 永远不能为

我该怎么做呢?

0 投票
2 回答
114 浏览

mysql - 当不在另一个表中时从一个表中选择用户

我有一个查询,从一个表中选择用户的注册日期。

我需要通过加入另一个表来修改原始查询,以确保用户不存在于第二个表(“访问”)中,其中成员 ID 低于某个值并且访问日期低于某个日期。

不知道如何把这两个放在一起。