[英]minus two tables with primary key
我有帶有表的sql數據庫:
sc:s_id,m_id
s:id,名稱
m:編號,名稱
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)行。
看來您可以這樣做:
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 )
但是,我可能會遺漏一些東西,因為看不到其他四個表與您的問題之間的關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.