2015-10-13 56 views
-1

我有4列是目前NULL表中的數據,該表如下所示:如何更新一個表,我需要獲取來自多個子查詢

Users 
- userId 
- wantsMail YES or NO 

對於每4列我需要另一個表(UserChoices)執行基於行的查詢,看起來像:

userId questionId answer (BIT) 
123  3929  1 

注:答案是一點,這樣1已被翻譯成「YES」,並0 'NO'

所以我必須去th粗略化用戶表中的所有行,然後使用'UsersChoices'表更新列。對於每一列,我都有問題需要查找。

所以對於「wantsMail」的questionId將如1039

什麼是去了解這樣的查詢的最佳方式

+0

沒有最好的辦法,如果你有一個方法可行,就使用它。 –

+0

您能否顯示您嘗試過的查詢? – jhmt

回答

0

我相信這是你想要什麼? - 它會插入所有行UserChoices其中questionId = 3929而轉換成答案wantsMail:

INSERT INTO Users (userId, wantsMail) 
SELECT 
    UserId 
    , CASE answer 
     WHEN 1 THEN 'YES' 
     ELSE 'NO' 
     END AS wantsMail 
FROM UserChoices 
WHERE questionId = 3929 

UPDATE:添加語法更新現有值:

UPDATE Users AS U 
SET U.wantsMail = CASE c.answer WHEN 1 THEN 'YES' ELSE 'NO' END 
FROM 
    Users AS U 
    INNEr JOIN 
    UserChoices AS C ON U.UserId = C.UserId 
WHERE 
    C.questionId = 3929 

這當然是未經測試的,因爲我沒有你的數據庫。但是,應該指出你正在努力的方向。

+0

這是一個更新聲明,而不是插入。所有的行都已經在表中,但列需要更新。 –

+0

廢話 - 對不起 - 我想你想插入一個空表。更新的語法將會不同...敬請關注 –

相關問題