SQL Server-更新联接-在on子句中设置特定值

时间:2018-10-12 06:17:30

标签: sql sql-server sql-update inner-join

SQL新手

有人可以通过联接解释以下更新的逻辑。我不理解'on'子句中特定值的设置...

(#c是一个小型临时表,其中包含以下字段:cert,prod,cov,i)

update m
set inieff = i
from tmempt m
    inner join #c on clntcode = '01208' and
                     polno = '00000408' and
                     certno = cert and
                     prodcode = prod and
                     covgcode = cov and
                     rcdsts = 'A'

...那么,'.. on clntcode ='01208'和polno ='00000408'在联接的情况下如何工作?我以为是通过现场关系加入工作的...

谢谢 J

2 个答案:

答案 0 :(得分:1)

内部联接很简单。对于两个表中的每一对行,都会评估library(stringr) dict2 <- setNames(toupper(as.character(dict$new)), paste0("\\b",toupper(dict$old),"\\b")) str_replace_all(input, dict2) # [1] "2049750 ТЕСС чай солид 450mg" 子句。当其计算结果为true时(即非false而不是on),则该对通过过滤器。

请注意,条件上没有任何规范。最典型的条件是一或多个列上的相等条件。但是,不平等,函数调用甚至子查询都是允许的。

外部联接的定义只是对NULL定义的微小变化。对于外部联接,即使inner join子句的计算结果不为true,行也会从一个或两个表中输出。

对于内部联接,将条件放在onon中实际上是一个样式问题。对于外部联接,可能需要在where中加入某些条件,而在on中则需要另一些条件。

答案 1 :(得分:0)

联接条件可以具有您喜欢的任何子句。

主要目的是将一个表的一列连接到另一个表中的列,但是它也可以用于限制您在所连接的表中查看的行。

例如类似的事情相对常见

select a1.address as postal, a2.address as street
from customer
join address a1 on a1.customerid=customer.id and a1.addresstype='postal'
join address a2 on a2.customerid=customer.id and a2.addresstype='street'