当前位置: 首页 > 知识库问答 >
问题:

过滤后如何连接两个表

蒋岳
2023-03-14

如何在使用某些条件筛选每个表之后连接两个表,并在获得筛选结果后连接两个结果。

已尝试代码,但显示语法错误

SELECT * 
FROM Table1 
WHERE flag1 = 0  
JOIN SELECT * 
     FROM TABLE2 
     where flag2 = 0 on Table1.email = TABLE2.email

共有3个答案

公冶昆杰
2023-03-14

除非我遗漏了什么,否则这应该很简单。伪代码,但是您可以用几种方法来解决这个问题...

SELECT 
   * 
FROM 
   Table1 
   JOIN TABLE2 ON Table1.orderlist_email = TABLE2.email
   Table1.flag1 = 0 
   AND TABLE2.flag2 = 0 

或者,您可以将WHERE条件添加到JOIN,如下所示:

SELECT 
   * 
FROM 
   Table1 
   JOIN TABLE2 ON Table1.orderlist_email = TABLE2.email
   AND Table1.flag1 = 0 
   AND TABLE2.flag2 = 0 

我认为您关心的是这是否意味着引擎仍将对两个表执行完全扫描,而不是坚持使用它将尝试加入的“预过滤”集。现代发动机应该足够聪明,可以弄清楚这些东西,但根据查询的复杂性,你的里程可能会有所不同。

桂智志
2023-03-14

可能没有足够的(RAM/缓存)空间来保存筛选结果,然后将它们连接在一起。它可能比你预期的慢。

*从技术上讲,你可以,但不是那么有效。

SELECT * 
FROM (
    SELECT * FROM Table1 where flag1 = 0
) A
JOIN (
    SELECT * FROM TABLE2 where flag2 = 0
) B 
ON A.orderlist_email = B.email;

但是,我建议先加入他们,然后再加入所有内容。MySQL(或任何sql引擎)将(通常)很好地为您优化它。

SELECT * 
FROM Table1
JOIN TABLE2 
ON A.orderlist_email = B.email
WHERE Table1.flag1 = 0 
AND TABLE2.flag2 = 0;
柯阳曦
2023-03-14

将两个Select语句视为SUBQUERIES,将这两个子查询的结果视为两个不同的表,然后尝试连接。

SELECT * FROM 
(SELECT * FROM Table1 where flag1 = 0) Table1 
JOIN 
(SELECT * FROM TABLE2 where flag2 = 0) Table2 
on Table1.orderlist_email = TABLE2.email
 类似资料:
  • 问题内容: 我有两个相等的大小。列表1由10个名称组成,列表2由其电话号码组成。 我想将姓名和号码合而为一。我该怎么做呢? 问题答案: 您可以用于将第二个列表的元素添加到第一个列表: 编辑: 根据上面的说明(“ 我想要新的Arraylist中具有名称和编号的单个String。 ”),您需要循环浏览第一个列表并将第二个列表中的项目追加到它。 像这样: 如果输入: 你会得到:

  • 我有两个。名为all_cv的csv文件。csv和common_cv。csv文件。首先,我用pandas制作了两个csv文件,然后将数据保存到一个名为join_cv_common的新文件中。由熊猫制作。在那之后,我整理了join_cv_common。熊猫的csv文件如下所示,存储的数据存储到名为sorted_cv_common的新文件中。csv。我想重写pandas的这两个函数——concat和so

  • 这是我制作的hashmap(Ik它不是最好的,也没有太多的逻辑),我想知道如果用户输入像“DVIII”这样的数据,其中“d”的值为“500”,“viii”的值为“8”,然后将它们打印为DVIII=5008,那么如何连接hashmap的值

  • 下面的代码片段是从JoinedStreams的javadoc复制的 这两个流仅基于一个键(通过< code>t =计算)进行连接 我会问我如何基于多个键进行连接,例如,one.a = two.a和

  • 我有一个两层神经网络的例子。第一层接受两个参数并有一个输出。第二个应作为第一层的结果使用一个参数和一个附加参数。应该是这样的: 因此,我创建了一个具有两个层的模型,并尝试将它们合并,但它返回了一个错误:<代码>顺序模型中的第一层必须获得“input\u shape”或“batch\u input\u shape”参数 在线<代码>结果。添加(合并)。 型号: