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

如何与条件进行内部联接。。。?

暴乐邦
2023-03-14

SQL Server 2000

使用20多个视图,所有视图都与table1(id和value1以及value2)进行内部连接

表1

ID Value1 Value2

001 100 null
001 200 null
001 300 null
001 400 null
001 200 null

ID Value1 Value2

001 null 100 
001 null 200 
001 null 300 
001 null 400 
001 null 200 

表2

ID value1 value2

....
....

some data's

从表1中,value1或value2应始终为null。现在的问题是,如果value1或value2列为null,则输出显示为null,因为所有视图都是id为value1、value2的内部联接

我想使用条件进行内部联接,如果value1不为null,则使用value1进行内部联接;如果value2不为null,则使用value2进行内部联接

像这样查询

Select * from table2 inner join with table1 on tabel2.id = table1.id and if table1.value1 is null then table2.value2 = table1.value2 or
else table2.value1 = table1= value1 end if

如何对上述条件进行查询

需要SQL查询帮助

共有3个答案

田谦
2023-03-14

尝试此解决方案:

Select * 
from table2 
inner join table1 on (tabel2.id = table1.id 
                      and table1.value1 is null 
                      and table2.value2 = table1.value2) 
                  or ( table2.value1 = table1.value1 )
柳绪
2023-03-14

您是否尝试过合并(值1、值2)?

施自怡
2023-03-14

是否需要以下工作?

SELECT * FROM table2
INNER JOIN WITH table1 ON table2.id = table1.id
    AND (table1.value1 = table2.value1 OR table1.value1 IS NULL)
    AND (table1.value2 = table2.value2 OR table1.value2 IS NULL)

我想如果你有一个大的数据集,这可能会很慢。。。

 类似资料:
  • 问题内容: 我想要一种改进我的sql代码的好方法,当条件满足时,我必须使用内部联接。我目前正在复制代码: 我想以这种方式做到这一点: 编辑: 解决方案(由于@Damien_The_Unbeliever): 问题答案: 这应该(大约)执行相同的操作: 当然,这还意味着必须编写对其中的列的任何其他引用,以期望此类列为。

  • 我想使用Hibernate条件语言编写此查询。我对Hibernate很陌生,无法将此查询转换为条件形式。我参考了很多关于 SO 的答案,但就我而言,我在不同的列上使用内部连接而不是主键/外键列。我提到了这个,但仍然不能正确。

  • 问题内容: 这有效: 这有效: 这适用于Oracle 11g,但不适用于10g(版本10.2.0): 除了Oracle版本(使用相同的转储创建基础),我看不出其他区别。由于我怀疑Oracle 10g中的错误,因此我接受与该问题明显相关的错误报告作为答案。 当然也可以接受直接的解决方案或解决方法。 问题答案: 我不会很快接受我自己的答案。 随时提交更精确的报告,尤其是当您从Oracle找到公开的错误

  • 问题内容: 我试图在一个列上内部联接两个表。从数据库方面来看,没有映射,因为这是我不想讨论的。 我想使用INNER JOIN执行HQL查询并检索ROLE对象/结果。 到目前为止,这是我的总部 session.createQuery(“ ROLE作为角色,INNER JOIN INVOLVEMENT作为参与角色,id。X =参与.roleid WHERE参与.id = X”)。list(); 我看到

  • 问题内容: 有没有一种方法可以使用VLOOKUP内部联接两个不同的Excel电子表格? 在SQL中,我可以这样进行: 工作表1: 工作表2: 结果将是: 如何在VLOOKUP中执行此操作?还是除了VLOOKUP之外还有更好的方法吗? 谢谢。 问题答案: 首先,让我们获取两个表中都存在的值的列表。如果您使用的是excel 2010或更高版本,则在工作表3 A2中输入以下公式: 如果您使用的是2007

  • 问题内容: 有人可以验证内部连接对PL SQL中的UPDATE语句是否有效吗?例如 问题答案: 该synthax在Oracle SQL中不起作用。 在Oracle中,如果表是“键保留”的,则可以更新联接,即: 假设这是的主键,则此连接是可更新的,因为对于A的每一行,B 最多 只有一行,因此该更新是确定性的。 在您的情况下,由于更新后的值不依赖于另一个表,因此您可以使用具有EXIST条件的简单更新,