问题标签 [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.
sql - “选择......在哪里”和加入的平等
假设我有table1
这样的:
像table2
这样:
以下两个查询会在每种条件下返回相同的结果集吗?
除非我真的错过了一些愚蠢的东西,否则我会说是的。但是我做了两个查询,归结为这种形式,我得到了不同的结果。有一些使用 WHERE IN 的嵌套查询,但对于最后一步,我注意到 JOIN 更快。嵌套查询都是完全隔离的,所以我不认为它们是问题,所以我只是想消除我对上述内容有误解的可能性。
感谢您的任何见解。
编辑
两个原始查询:
编辑 2
虽然我仍然不明白为什么查询会返回不同的结果,但似乎我们的逻辑从一开始就存在缺陷,因为我们在某些部分使用了错误的列。请注意,我并不是说我在解释上面写的查询时犯了错误或有一些错字,我们只需要选择一些不同的东西。
通常我不会在弄清这些事情的底部之前休息,但我很累,并且正在进入自一月份以来的第一个假期,跨越一天以上,所以我现在真的懒得再去寻找了. 我相信这里给出的提示稍后会派上用场。已为所有帮助分发了赞成票,我接受了 Ypercube 的回答,主要是因为他的评论让我走得最远。但是谢谢大家!如果我稍后发现更多信息,我会尽量记住 ping 回来。
sql - SQL 查询联接 2 个表
我是 SQL 新手,正在阅读联接,但我有点困惑,所以需要帮助....
我有一个名为 student_sport 的表,它存储 StudentID 和 SportID
我有另一个存储比赛细节的表......所以基本上是sportsID,MatchId,......
我想做的是....对于一个特定的学生显示已经进行了比赛的运动。IE。如果仅在第二个表中存在运动 ID,则在我检查学生参加的运动时显示该运动 ID。
结果集应该只包含学生参加过比赛的那些运动......
谢谢
sql - 如何重写我的查询以基于给定外键的存在,而不是该键出现的次数?
在最一般的情况下,我有如下查询:
本质上,我想要:
学校名称,就读该学校任教的学生人数,Schoolid
我实际上得到的是
学校名称,该学校学生教授的所有科目的总和,schoolid——换句话说,如果学生 1 辅导 3 个科目,学生 2 辅导 5 个科目,那么我得到 8 而不是返回 2!
我已经意识到问题在于以下声明:
这不是检查远程表中给定外键的存在,而是为该键的每个实例提供结果。
我想弄清楚的是如何绑定它以将其限制为简单地存在给定键,而不是键出现的次数。我知道我在我的 SQL 课程中看到过类似的案例,但我不记得解决方案是什么。
sql - 将 SQL 查询转换为关系代数
我需要一些帮助将 SQL 查询转换为关系代数。
这是 SQL 查询:
IN
由于上面示例中的子查询,我被卡住了。
谁能为我演示如何在关系代数中表达这个 SQL 查询?
非常感谢。
编辑:这是我在关系代数中提出的解决方案。这个对吗?它是否重现 SQL 查询?
Scodes ← ΠServerCode(σCustomerCode='102'(约会))
Ccodes ← ΠCustomerCode(约会 ⋉ Scodes)
结果←(客户⋉Ccodes)
sql - sql半连接优化
有两张桌子
t1 和 t2 是 oracle 分区表。t2 很大。
我想获取与 t2 的时间范围匹配的 t1 :
子查询将返回大约 10K t1_id。它真的很慢,有什么建议吗?
r - 使用 data.table 执行半连接
如何使用 data.table执行半联接?半连接类似于内连接,只是它只返回 X 的列(而不是 Y 的列),并且不重复 X 的行以匹配 Y 的行。例如,以下代码执行内连接加入:
半连接只会返回x[1]
php - MYSQL查询双JOIN
这是我的查询:
psttodo-in
现在,当我在 Sequal Pro 中检查我的表时,我选择了 whereSegment No_ PST = PSS1400146
和Deelgebied = 2
我 count的行84
。但是当我运行查询时,我得到了252
. 我究竟做错了什么?
更新:
我的表结构:
mysql - Mysql子查询返回null
当我执行下面的查询时,它返回 NULL。
当我取出最后一行时,它返回记录,但是当我添加它时,我什么也得不到,所以它让我相信这是我的子查询的问题。
当我自己执行子查询时,我得到两个 ID(14 和 15)。当我将子查询替换为:“AND s.id IN (14,15);” ...有用。有什么想法吗?
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 的子集。