【问题标题】:Oracle SQL using SET statement with a look up使用带有查找的 SET 语句的 Oracle SQL
【发布时间】:2016-12-06 14:30:10
【问题描述】:

我是 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'

我已经尝试了很多变体,包括内部连接。 非常感谢任何建议。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    你似乎想要这样的东西:

    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 子句中进行过滤以获取要更新的行。

    【讨论】:

      【解决方案2】:

      您的问题不是很清楚,但据我了解,我提出以下建议:

      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 )
      

      如果需要,您还可以向子查询添加条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 2018-06-27
        • 2018-11-29
        • 1970-01-01
        相关资源
        最近更新 更多