SQL 根据与另一个表的连接更新表

标签 sql oracle oracle10g ora-00933

我正在尝试通过将值与另一个表连接来更新表。 这是我到目前为止的查询。

    UPDATE LOGIN  SET LOGIN.DISABLED_IND = 'N', LOGIN.DREASON = 'Test'
        FROM  CONTACT
        WHERE CONTACT.CONTACT_ID = LOGIN.CONTACT_ID 
        AND CONTACT.RID ='abc'

当我运行这个时,我得到这个

[Error Code: 933, SQL State: 42000] ORA-00933: SQL command not properly ended

谢谢

最佳答案

如果您希望更新 LOGIN 中的大部分行,那么使用 EXISTS 可能会更有效

UPDATE LOGIN  l
   SET l.DISABLED_IND = 'N', 
       l.DREASON = 'Test'
 WHERE EXISTS (
    SELECT 1
      FROM CONTACT c
     WHERE c.CONTACT_ID = l.CONTACT_ID 
       AND c.RID ='abc' )

如果您要更新 LOGIN 中相对较小的部分行,Yahia 使用 IN 的方法可能会更有效

UPDATE LOGIN  l
   SET l.DISABLED_IND = 'N', 
       l.DREASON = 'Test'
 WHERE l.contact_id IN (
    SELECT c.contact_id
      FROM CONTACT c
     WHERE c.RID ='abc' )

关于SQL 根据与另一个表的连接更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6892215/

相关文章:

sql - 与 UDF 交叉应用

sql - 获取日期时间范围之间的类可用时间

sql - 动态 SQL 旋转

java - Oracle如果不存在则创建表

oracle - 如何在 View 中创建非空列

sql - 为什么这个 'WHEN THEN' SQL 查询没有返回预期的结果?

mysql - 如何将 MySQL 查询结果存储在另一个表中?

SQL命令执行多次?

database - 如何使用 desc 顺序创建索引组织表

c++ - 使用 C++ 的 Oracle 扩展存储过程