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

使用OR语法在多个列上使用联接表

廖华翰
2023-03-14
问题内容

所以我想做的是:-

SELECT * FROM TableA
JOIN TableB ON TableA.OriginPhoneNumber=TableB.Id OR TableA.DestinationPhoneNumber=TableB.Id

相当奇怪的查询,我知道!但是我正在尝试在EntityFramework / Linq中复制此代码-
查看所有示例,当联接使用AND(使用匿名类型)但对OR联接存在相同的结果时,我可以看到一种非常简单的方法?


问题答案:

只需使用where子句进行交叉连接

var results = from a in db.TableA
              from b in db.TableB
              where a.OriginPhonenumber == b.Id 
                    || a.DestinationPhoneNumber == b.Id
              select new { A = a, B = b };

令人怀疑的是,连接条件或连接条件是否会比此条件更有效,但是可能会导致相同的执行计划。除了性能,它还会产生相同的结果。



 类似资料:
  • 日安。 因此,我有mapping@id@generatedvalue(strategy=generationtype.sequence,generator=“discount_fares_id_sequence”)@sequenceGenerator(name=“discount_fares_id_sequence”,sequenceName=“discount_fares_id_seq”,all

  • 我正在尝试使用多个条件连接两个表。由于第二个联接条件,以下查询不起作用。

  • 问题内容: 我有一个在MySQL中运行良好的查询,但是在Oracle上运行该查询时,出现以下错误: SQL错误:ORA-00933:SQL命令未正确终止 00933。00000-“ SQL命令未正确终止” 查询是: 问题答案: 该语法在Oracle中无效。你可以这样做: 或者您 可以 执行以下操作: 它取决于内联视图是否被Oracle更新( 要更新第二条语句取决于 此处 列出的一些规则 )。

  • 问题内容: 我有4个不同的表要加入。这些表的结构如下: 从表A开始,我了解如何使用b联接表a和c,因为b具有这些表的主键。我也希望能够在TableA上加入表TableD。下面是我的SQL语句,该语句首先连接表A和B,然后将其连接到C: 当我尝试添加另一个联接以包括D时,出现“ TableD”未知的错误: 问题答案: 您想要更多类似这样的东西: 在您的示例中,您实际上并未包含。您要做的就是像以前一样

  • 问题内容: 问题 表格1: 表2: 表3: 给定键(A1或A2),我需要使用表2中的相应值更新表1中的DataColumn1和DataColumn2列。 因此,table1可以更新x个行,如上面的数据所示。如果我要更新A1,则01和02行都应更新 (因此,表01中的值对于键01和键02的datacolumn1分别为0.15和1.2(对于datacolumn2)) 到目前为止我尝试过的是: 问题:

  • 问题内容: 我试图将记录插入表中,并且在插入此记录时,我的“项目评分列”(在下面的示例中为“ PG”)出现“此处不允许列”错误: 但是当我拿出“ PG”时,它在“美国棒球经典赛”上引发了错误。 这里发生了什么? 问题答案: 用双引号引起来,这意味着它不是字符串。字符串在SQL中用单引号分隔。但我建议将其编写为: