使用SET语句查询的Oracle SQL
问题描述:
我是SQL新手。使用SET语句查询的Oracle 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'
我已经试过这其中包括内部连接许多变化。 任何建议是最感谢。
答
你似乎想是这样的:
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
子句中筛选获得您想要更新的行。
答
你的问题不是很清楚,但据我了解我propse如下:
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)
您还可以根据需要添加条件的子查询。
谢谢你的回复。为我工作 –