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
答案 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,行也会从一个或两个表中输出。
对于内部联接,将条件放在on
与on
中实际上是一个样式问题。对于外部联接,可能需要在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'