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

在MySQL中模拟完全外部联接的有效方法?

齐才艺
2023-03-14
问题内容

根据Google搜索:由于MySQL不支持完全外部联接,因此可以通过union和/或union
all模拟它。但是,这两者要么删除正版副本,要么显示伪造副本。

什么是正确有效的方式?

这个问题似乎相关,但无法获得答案。


问题答案:

您可以使用左联接和右联接:

SELECT * FROM tableA LEFT JOIN tableB ON tableA.b_id = tableB.id
UNION ALL
SELECT * FROM tableA RIGHT JOIN tableB ON tableA.b_id = tableB.id
WHERE tableA.b_id IS NULL

在Wikipedia上也有关于此主题的一些信息:完全外部联接。

维基百科文章建议在MySQL中使用UNION。这比UNION ALL慢一点,但更重要的是,它不会总是给出正确的结果-
它将从输出中删除重复的行。因此,这里更喜欢使用UNION ALL而不是UNION。



 类似资料:
  • 问题内容: 如何使用django QuerySet API创建跨M2M关系芯片的完全外部联接的查询? 它不受支持,欢迎提供有关创建我自己的经理来执行此操作的提示。 编辑添加: @ S.Lott:感谢您的启发。应用程序需要使用OUTER JOIN。即使它仍然不完整,它也必须生成一个报告,显示输入的数据。我不知道结果将是一个新的类/模型。您的提示将对我有很大帮助。 问题答案: Django在通常的SQ

  • 问题内容: 我正在尝试编写一个join语句来将以下三个数据集连接在一起。(这是使用MS SQL Server的) 我认为完全可以通过外部联接来做到这一点,但是我遇到了主要的跨产品问题。 问题答案: 试试看:

  • 问题内容: 我对MySQL中的FULL OUTER JOIN有疑问。我有两个(或更多表): 我已经使用此查询来加入我的行列: 要得到: 我的问题是,我无法同时将两个id列折叠为一列来获取此信息: 有什么建议吗? 问题答案: 采用: 该操作者除去行/记录重复的,所以你必须列适当地定义/列表。 脚本: 编辑:上面的固定线

  • 问题内容: 我使用FULL OUTER JOIN联接了2个表,这花了6分钟来运行并给出输出。 我使用LEFT OUTER JOIN和RIGHT OUTER JOIN的UNION做了同样的事情。仅用了15秒 有人知道为什么会这样吗? 问题答案: 您可能在两个表中都有很多行,共有几行,并且所讨论的列上没有索引。

  • 所以我一直在寻找不同的方法来比较两个没有键列的PySpark数据帧。 假设我有两个数据帧,df1 我的想法是,我将得到一个输出数据帧,其中包含df1中与df2中任何行都不匹配的行,反之亦然。我还想要一些标志,以便区分df1中的行和df2中的行。 到目前为止,我已经将完全外部连接视为方法,例如: 完整的外部连接的问题是我可能需要处理一些非常大的数据帧(100万记录),我关心效率。我想过使用反左连接和

  • 当我测试模拟外部调用时,我没有看到报告的模拟值,而是,并且我的测试失败。我可以在测试类中看到模拟值(报告),但在类中看不到,并且应用程序(方法返回)没有像我预期的那样被修改。 我的期望是:当我在Impl类中模拟外部调用时,模拟值应该在那里可用,其余的一切都会发生,就好像调用了真正的方法来完成单元测试一样。 实现代码: 测试代码: