问题标签 [semi-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 回答
269 浏览

sql - 我需要什么样的加盟?

我有一张投票表:

和游戏桌:

我将使用哪种联接来执行查询“从 [用户 A 对游戏投票] 的游戏中选择 *”?

我已经尝试按照Jeff's guide进行操作,但没有得到预期的结果。

0 投票
5 回答
314 浏览

sql - “选择......在哪里”和加入的平等

假设我有table1这样的:

table2这样:

以下两个查询会在每种条件下返回相同的结果集吗?

除非我真的错过了一些愚蠢的东西,否则我会说是的。但是我做了两个查询,归结为这种形式,我得到了不同的结果。有一些使用 WHERE IN 的嵌套查询,但对于最后一步,我注意到 JOIN 更快。嵌套查询都是完全隔离的,所以我不认为它们是问题,所以我只是想消除我对上述内容有误解的可能性。

感谢您的任何见解。

编辑

两个原始查询:

编辑 2

虽然我仍然不明白为什么查询会返回不同的结果,但似乎我们的逻辑从一开始就存在缺陷,因为我们在某些部分使用了错误的列。请注意,我并不是说我在解释上面写的查询时犯了错误或有一些错字,我们只需要选择一些不同的东西。

通常我不会在弄清这些事情的底部之前休息,但我很累,并且正在进入自一月份以来的第一个假期,跨越一天以上,所以我现在真的懒得再去寻找了. 我相信这里给出的提示稍后会派上用场。已为所有帮助分发了赞成票,我接受了 Ypercube 的回答,主要是因为他的评论让我走得最远。但是谢谢大家!如果我稍后发现更多信息,我会尽量记住 ping 回来。

0 投票
4 回答
6860 浏览

sql - SQL 查询联接 2 个表

我是 SQL 新手,正在阅读联接,但我有点困惑,所以需要帮助....

我有一个名为 student_sport 的表,它存储 StudentID 和 SportID

我有另一个存储比赛细节的表......所以基本上是sportsID,MatchId,......

我想做的是....对于一个特定的学生显示已经进行了比赛的运动。IE。如果仅在第二个表中存在运动 ID,则在我检查学生参加的运动时显示该运动 ID。

结果集应该只包含学生参加过比赛的那些运动......

谢谢

0 投票
3 回答
101 浏览

sql - 如何重写我的查询以基于给定外键的存在,而不是该键出现的次数?

在最一般的情况下,我有如下查询:

本质上,我想要:

学校名称,就读该学校任教的学生人数,Schoolid

我实际上得到的是

学校名称,该学校学生教授的所有科目的总和,schoolid——换句话说,如果学生 1 辅导 3 个科目,学生 2 辅导 5 个科目,那么我得到 8 而不是返回 2!

我已经意识到问题在于以下声明:

这不是检查远程表中给定外键的存在,而是为该键的每个实例提供结果。

我想弄清楚的是如何绑定它以将其限制为简单地存在给定键,而不是键出现的次数。我知道我在我的 SQL 课程中看到过类似的案例,但我不记得解决方案是什么。

0 投票
2 回答
5230 浏览

sql - 将 SQL 查询转换为关系代数

我需要一些帮助将 SQL 查询转换为关系代数。

这是 SQL 查询:

IN由于上面示例中的子查询,我被卡住了。

谁能为我演示如何在关系代数中表达这个 SQL 查询?

非常感谢。

编辑:这是我在关系代数中提出的解决方案。这个对吗?它是否重现 SQL 查询?

Scodes ← ΠServerCode(σCustomerCode='102'(约会))

Ccodes ← ΠCustomerCode(约会 ⋉ Scodes)

结果←(客户⋉Ccodes)

0 投票
1 回答
220 浏览

sql - sql半连接优化

有两张桌子

t1 和 t2 是 oracle 分区表。t2 很大。

我想获取与 t2 的时间范围匹配的 t1 :

子查询将返回大约 10K t1_id。它真的很慢,有什么建议吗?

0 投票
8 回答
6483 浏览

r - 使用 data.table 执行半连接

如何使用 data.table执行半联接?半连接类似于内连接,只是它只返回 X 的列(而不是 Y 的列),并且不重复 X 的行以匹配 Y 的行。例如,以下代码执行内连接加入:

半连接只会返回x[1]

0 投票
1 回答
244 浏览

php - MYSQL查询双JOIN

这是我的查询:

psttodo-in现在,当我在 Sequal Pro 中检查我的表时,我选择了 whereSegment No_ PST = PSS1400146Deelgebied = 2我 count的行84。但是当我运行查询时,我得到了252. 我究竟做错了什么?

更新

我的表结构:

0 投票
2 回答
689 浏览

mysql - Mysql子查询返回null

当我执行下面的查询时,它返回 NULL。

当我取出最后一行时,它返回记录,但是当我添加它时,我什么也得不到,所以它让我相信这是我的子查询的问题。

当我自己执行子查询时,我得到两个 ID(14 和 15)。当我将子查询替换为:“AND s.id IN (14,15);” ...有用。有什么想法吗?

0 投票
4 回答
31478 浏览

sql - Hive LEFT SEMI JOIN 表示“不存在”

我有两个带有单个键列的表。表 a 中的键是表 b 中所有键的子集。我需要从表 b 中选择不在表 a 中的键。

这是 Hive 手册的引文:“LEFT SEMI JOIN 以有效的方式实现了不相关的 IN/EXISTS 子查询语义。从 Hive 0.13 开始,使用子查询支持 IN/NOT IN/EXISTS/NOT EXISTS 运算符,因此大多数这些 JOIN 不'不必再手动执行了。使用 LEFT SEMI JOIN 的限制是右侧表只能在连接条件(ON 子句)中引用,而不能在 WHERE 或 SELECT 子句等中引用。 "

他们用这个例子来说明:

相当于

但是,我需要做的是第一个带有'NOT IN;的例子。不幸的是,Hive 0.13 不支持这种语法。它仅用于说明:

我在这个网站上搜索了推荐,看到了这个例子:

它没有按预期工作。当我加入 a.key NOT in b 和 a.key IN b 时,我不会以这种方式获得原始 a。也许那是因为这个查询不能解决问题,注意粗体文本 - b.key 不应该出现在 WHERE 中。

那我该怎么办?还有什么妙招?谢谢!

PS 我不能分享任何真实数据;这是一个非常简单的示例,其中 a 中的键都包含在 b 中,而 a 是 b 的子集。