簡體   English   中英

減去兩個帶有主鍵的表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM