2013-05-16 58 views
0

我正在使用SQL Server 2008 R2,我有以下表格: client(id,country,name)temp(id,country),它們在彼此之間不相關。 我想知道如何將temp.id值設置爲client.id,並且與國家相同。是否帶有更新語句?我一直在尋找其他網站,我剛剛找到相關表的解決方案,這不是我的情況。使用來自另一個不相關表的數據更新表

+1

,目前尚不清楚。你想在這裏實現什麼? – Rodion

+0

如果它們不相關,爲什麼client-id與temp-id有關? –

+0

@rudym對不起,我正在處理一個更大的數據庫,但我需要修改的表是客戶端和臨時數據。我需要做的是:「創建一個從西班牙挑選客戶的臨時表,更新他們的ID,添加10並將國家更改爲德國,在客戶端表上插入這些修改後的客戶端」。我已經完成了第一步(創建表和更新其數據),但是我被困在必須將修改後的客戶端從臨時表添加到客戶端表的部分。 – Jmdjorgeek

回答

0

你應該能夠做一個簡單的insert

insert into client 
select id, country, '' from temp 

您可能需要設置一個特定的name,因爲它不是在temp表(除非它在client表的可爲空)。

Here is a demo

替代地,如果id是一個自動遞增列中,從select除去id

insert into client 
select country, '' from temp 

Here is a demo

0

當你在SET中思考時,你正在思考程序。

使用SELECT
使用選擇從西班牙唯一的客戶WHERE
修改數據採用恆值列
使用檢索到的數據插入到表

INSERT INTO client 
SELECT id+10 as id, 'Germany' as country 
FROM client 
WHERE country = 'Spain' 

檢索中檢索數據當然,如果這是一個練習,你必須學習像SELECT,WHERE,UPDATE等東西,那麼你會做你的程序步驟。

0

也許你想這兩個表同步的,一個辦法:

UPDATE t SET t.id=c.id, t.country=c.countryname 
FROM client c INNER JOIN temp t ON t.id = c.id 

INSERT INTO temp(id,country) 
    SELECT c.id, c.countryname 
    FROM client c 
    WHERE NOT EXISTS(SELECT 1 FROM temp t 
        WHERE t.id=c.id) 

Demo

相關問題