UPDATE RMS_IPTRUNK
SET WRONG_INFO=WRONG_INFO||'ASDASD'
WHERE
AND STATUS='在用'
AND NOT EXISTS(
SELECT 1
FROM RMS_NEPORT A
WHERE
A.ZH_LABEL=RMS_IPTRUNK.REMOTE_PORT)
AND NOT EXISTS(
SELECT 1
FROM RMS_NEPORT A
WHERE
A.PORT_NAME=RMS_IPTRUNK.REMOTE_PORT);初学SQL 这句话不是很理解 如果 A.ZH_LABEL=RMS_IPTRUNK.REMOTE_PORT 错误就不会更新了吧?如果我要A.ZH_LABEL != A.PORT_NAME 这句话是不是验证不了?SQL是顺序执行的吧?我写上面那段语句是都会执行完的吗?
select * from RMS_IPTRUNK
WHERE
AND STATUS='在用'
AND NOT EXISTS(
SELECT 1
FROM RMS_NEPORT A
WHERE
A.ZH_LABEL=RMS_IPTRUNK.REMOTE_PORT)
AND NOT EXISTS(
SELECT 1
FROM RMS_NEPORT A
WHERE
A.PORT_NAME=RMS_IPTRUNK.REMOTE_PORT);如果我要A.ZH_LABEL != A.PORT_NAME 这句话是不是验证不了?
--A.ZH_LABEL != A.PORT_NAME意思不一样,SQL是顺序执行的吧?我写上面那段语句是都会执行完的吗?
--上面只有一个sql,没有什么顺序可言
1.我的意思是如果
A.ZH_LABEL=RMS_IPTRUNK.REMOTE_PORT
下面的EXISTS无论是真是假
都不会更新错误?2.我要判断A.ZH_LABEL 和 A.PORT_NAME 是否匹配,要另外写个语句?3.这一条SQL语句是不是每个EXISTS都会跑一遍?
A.ZH_LABEL=RMS_IPTRUNK.REMOTE_PORT和A.PORT_NAME=RMS_IPTRUNK.REMOTE_PORT两个条件都会得到判断
当且仅当这两个条件都不符合 也就是说两个NOT EXISTS都返回TURE的时候UPDATE语句才会更新
from RMS_IPTRUNK
WHERE 1=1
AND STATUS='在用'
AND NOT EXISTS(
SELECT 1
FROM RMS_NEPORT A
WHERE
A.ZH_LABEL=RMS_IPTRUNK.REMOTE_PORT)
AND NOT EXISTS(
SELECT 1
FROM RMS_NEPORT A
WHERE
A.PORT_NAME=RMS_IPTRUNK.REMOTE_PORT);
UPDATE RMS_IPTRUNK
SET WRONG_INFO=WRONG_INFO||'ASDASD'
WHERE
AND STATUS='在用'
AND NOT EXISTS(
SELECT 1
FROM RMS_NEPORT A
WHERE
A.ZH_LABEL=RMS_IPTRUNK.REMOTE_PORT and A.PORT_NAME=RMS_IPTRUNK.REMOTE_PORT );
在RMS_IPTRUNK, RMS_NEPORT 找出 A.ZH_LABEL <> RMS_IPTRUNK.REMOTE_PORT and A.PORT_NAME <> RMS_IPTRUNK.REMOTE_PORT 的记录更新