Sql 减去两个主键为的表

Sql 减去两个主键为的表,sql,oracle,Sql,Oracle,我有sql数据库和表: sc:s_id,m_id s:身份证,姓名 m:身份证,姓名 sc_标准件:s_id,m_id s_standart:身份证,姓名 m_standart:身份证,姓名 sc.s\U id来自s.id,sc.m\U id来自m.id,sc\U standart.s\U id来自s\U standart.id,sc\U standart.m\U id来自m\U standart.id 我应该为sc中不存在于sc标准中的所有sc行设置m_id=null 我已经写过: SELEC

我有sql数据库和表:

sc:s_id,m_id

s:身份证,姓名

m:身份证,姓名

sc_标准件:s_id,m_id

s_standart:身份证,姓名

m_standart:身份证,姓名

sc.s\U id来自s.id,sc.m\U id来自m.id,sc\U standart.s\U id来自s\U standart.id,sc\U standart.m\U id来自m\U standart.id

我应该为sc中不存在于sc标准中的所有sc行设置m_id=null

我已经写过:

SELECT s.name, m.name 
FROM s
JOIN sc
   ON s.id=sc.s_id
JOIN m
   ON m.id=sc.m_id
MINUS
SELECT s_standart.name, m_standart.name 
FROM s_standart
JOIN sc_standart
   ON s_standart.id=sc_standart.s_id
JOIN m_standart
   ON m_standart.id=sc_standart.m_id

因此,我应该从上面的选择中更新与(s.name,m.name)相关的(s\u id,m\u id)行。

看起来您可以这样做:

update sc
set    m_id = null
where  not exists
       ( select 1 from sc_standart s
         where  s.m_id = sc.m_id )
或使用
减号

update sc
set    m_id = null
where  m_id in
       ( select m_id from sc
         minus
         select m_id from sc_standart )
但是,我可能遗漏了一些内容,因为我看不出其他四个表与您的问题有何关联。

如果将sc中不存在于sc标准中的所有行的规则设置为m_id=null,那么其他表与此有何关系?只有
sc
sc_标准
m_id
列。