我有带有表的sql数据库:
sc:s_id,m_id
s:ID,名称
m:ID,名称
sc_standart:s_id,m_id
s_standart:ID,名称
m_standart:ID,名称
sc.s_id来自s.id,sc.m_id来自m.id,sc_standart.s_id来自s_standart.id,sc_standart.m_id来自m_standart.id。
我应该为sc中的所有sc_standart中不存在的行设置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_id,m_id)行。
答案 0 :(得分:0)
您似乎可以按照以下方式进行操作:
update sc
set m_id = null
where not exists
( select 1 from sc_standart s
where s.m_id = sc.m_id )
或使用minus
:
update sc
set m_id = null
where m_id in
( select m_id from sc
minus
select m_id from sc_standart )
但是,由于看不到其他四个表与您的问题之间的关系,我可能会遗漏一些东西。