我是SQL新手。
我正在尝试开发代码来运行一个简单的查询,根据选择条件更新一个表中的列值,并在另一个表上查找。
要求是:
If CODE TABLE SERIAL NUMBER = SERIAL NO list table and CODE TABLE check Code = 999 and CODE TABLE Taken up indicator = 'Y'
THEN in CODE table
Update
check code = 0
Taken up indicator = SPACES
SERIAL NO LIST table only holds SERIAL NO
CODE table holds SERIAL NO; CHECK CODE ; Taken up indicator
SOME SERIAL NO S IN CODE TABLE HAVE CHECK CODE = 999 AND Taken up indicator = Y
These need to be amended to 0 and SPACE if the SERIAL NOs MATCH
SQL是:
UPDATE
SET CODE.CHECK_CODE = '0', CODE.TKUP_FLAG = ' '
WHERE CODE.SERIAL_NO = SERIAL_NO_LIST.SERIAL_NO
AND CODE.CHECK_CODE = '999'
AND CODE.TKUP_FLAG = 'Y'
我尝试过很多变种,包括内连接。 任何建议都非常感谢。
答案 0 :(得分:0)
你似乎想要这样的东西:
update code
set CHECK_CODE = 0,
TKUP_FLAG = ' '
where exists (select 1
from SERIAL_NO_LIST
where CODE.SERIAL_NO = SERIAL_NO_LIST.SERIAL_NO
) and
code.CHECK_CODE = '999' and
code.TKUP_FLAG = 'Y';
也就是说,在where
子句中进行过滤以获取要更新的行。
答案 1 :(得分:0)
你的问题不是很清楚,但根据我的理解,我提出以下建议:
update CODE
set CHECK_CODE = '0', TKUP_FLAG = ' '
where CODE.CHECK_CODE = '999'
AND CODE.TKUP_FLAG = 'Y'
AND CODE.SERIAL_NO IN (SELECT SERIAL_NO_LIST.SERIAL_NO FROM SERIAL_NO_LIST)
其他解决方案:
update CODE
set CHECK_CODE = '0', TKUP_FLAG = ' '
where CODE.CHECK_CODE = '999'
AND CODE.TKUP_FLAG = 'Y'
AND EXISTS (SELECT SERIAL_NO_LIST.SERIAL_NO FROM SERIAL_NO_LIST WHERE SERIAL_NO_LIST.SERIAL_NO = CODE.SERIAL_NO )
如果需要,您还可以为子查询添加条件。