2011-05-02 54 views
0

我現在有一個數據庫,裏面有兩個表格,一個表示工作細節和其他公司詳細信息。 「Jobs_name」存在於「Jobs」表中,在「name」字段下的「Companies」表中將具有匹配的條目。我希望基本上將「comp_id」的「Companies」表中的字段設置爲「Jobs」表中的字段「id」的值,其中「Companies」表中的「name」等於「 「Jobs」表中的「company_name」。無法從2個表中獲取SQL語句更新?

我已經創建了下面的查詢,我相信應該工作,但它返回沒有行受到影響?任何人都可以請幫助我嗎?

UPDATE `jobs`, `companies` 
     SET `comp_id` = 'companies.id' 
WHERE ('companies.name' = 'jobs.company_name') 

感謝

+0

您正在使用哪種RDBMS? – codingbadger 2011-05-02 09:31:06

+0

據我所知,你只能更新1個表格中的1個表格。 – Ruben 2011-05-02 09:31:54

回答

0

讀你的問題,你只更新一個表而不是兩個?

我想基本設置字段中 「comp_id」來 的「公司」表是在 「作業」表中的字段「ID」的值,其中「名」在 「公司」表等於「工作」表中的 「company_name」。

所有你想要做的就是在companies表中的列comp_id設置爲id列的值在jobs表,其中namecompany_name列是一樣的嗎?

要做到這一點使用MSSQL你會做這樣的事情:

Update c 
Set c.comp_id = j.Id 
From dbo.Companies c 
Join dbo.Jobs j on c.Name = j.Company_Name 
0

您可以在SQL Server中的UPDATE語句只更新1臺。要一次,你有以下幾種選擇更新多個表:

  1. 使用存儲的特效

  2. 創建select語句的景色,從視圖

  3. 使用觸發器刪除。

+0

嗨, 其實我已經解決了,現在這個問題我自己與下面的MySQL查詢: 更新作業,公司成立jobs.comp_id = companies.id WHERE jobs.company_name = companies.name 感謝 – user723858 2011-05-02 09:42:50

1

這種情況:

WHERE( 'companies.name'= 'jobs.company_name')

一個問題(除非這是在發佈副本&粘貼錯誤)

你正在比較兩個字符串文字那裏(當然,因爲它們不一樣,你將永遠不會更新任何東西)。

原因是您使用的單引號表示字符串文字。要引用列名稱,您需要使用雙引號或以前使用的反引號(假設您在MySQL上)。

+0

+1然而MySQL * *有[多表更新語法](http://dev.mysql.com/doc/refman/5.6/en/update.html) – 2011-05-02 11:40:48

+0

@Martin:感謝您的信息。不知道。我編輯了我的答案 – 2011-05-02 11:44:04