2014-04-11 49 views
0

我知道這是非常不專業的,但這是我們的業務系統,所以我無法改變它。根據三張表更新專欄

我有三個表格:t_posList,t_url,t_type。表t_posList有一個名爲URL的列,該列也存儲在表t_url(表t_url的ID不保存在t_posList中,因此我必須找到它,如posList.Url = t_url.Url)。

每一個數據行的列t_posList.status應更新爲「非顧客」(這將是一個身份ID,但讓保持簡單),如果:的t_url的ID不能t_type.url_id找到。

因此,查詢有兩個步驟:首先我必須得到所有的數據行,其中t_posList.Url = t_url.Url。在此之後,我必須檢查發現哪些ID的t_url行可以不是找到t_type.url_id

我真的希望你明白我的意思。因爲我們的系統非常不專業,而且我的SQL知識不太好,所以我無法做出這個查詢。

編輯:我想這:

UPDATE t_poslist SET status = ( 
    SELECT 'non-customer' 
    FROM t_url, t_type 
    WHERE url in 
      (select url from t_url 
      LEFT JOIN t_type ON t_url.ID = t_type.url_id 
      WHERE t_type.url_id is null) 
) 

回答

0

這個是什麼?

UPDATE p 
SET status = 'non-customer' 
FROM t_poslist p 
INNER JOIN t_url u ON u.url = p.url 
WHERE NOT EXISTS 
(
    SELECT * FROM t_type t WHERE t.url_id = u.ID 
) 
+0

sory沒有爲我工作,但我認爲它是我的Db問題。我會保持原樣,導致其學校/公司項目,我必須完成它,直到16.04 =>不在我的優先級列表之上。 –