2013-04-03 46 views
0

我想從select語句更新一個字段。這是我目前的查詢如何使用WHERE子句在MySql中更新字段形成select語句?

UPDATE phone_cals 
SET call_code_id = id, result_code_id = 0, call_subject = title WHERE status = 1 
select call_code_id AS id, call_code_title AS title FROM call_codes 

我想設置

phone_calls.call_code_id = call_codes.call_code_id 
phone_calls.result_code_id = 0 
phone_calls.call_subject = call_codes.call_code_title 

WHERE phone_calls.status = 1 

是的,我有一個語法錯誤,但我不知道如何解決它

綜述我想選擇一個隨機call_codes.call_code_id並將其分配給phone_calls.call_code_id

回答

0

如果我正確理解你的問題,我認爲你需要這樣的事情:

UPDATE 
    phone_calls, 
    (select call_code_id, call_code_title FROM call_codes ORDER BY rand() LIMIT 1) c2 
SET 
    phone_calls.call_code_id = c2.call_code_id, 
    phone_calls.result_code_id = 0, 
    phone_calls.call_subject = c2.call_code_title 
WHERE 
    phone_calls.call_subject = 1 

這將更新所有call_code_id和所有call_subjectcall_codes表,其中call_subject = 1選擇了一個隨機值。

編輯

如果您需要在每一行更新爲不同的隨機值,我想你可以這樣做:

UPDATE 
    phone_calls 
SET 
    call_code_id = (select call_code_id FROM call_codes ORDER BY rand() LIMIT 1), 
    result_code_id = 0 
WHERE 
    phone_calls.call_subject = 1; 

UPDATE 
    phone_calls INNER JOIN call_codes 
    ON phone_calls.call_code_id = call_codes.call_code_id 
SET 
    phone_calls.call_subject = call_codes.call_code_title 
WHERE 
    phone_calls.call_subject = 1; 

(不知道是否有可能用做只是一個查詢)。它可能很慢,但它應該工作。

+0

感謝您的:)我將WHERE子句更改爲WHERE phone_calls.status = 1但是,這將所有記錄更改爲相同的call_code和相同的call_subject。我想從call_code表中選擇隨機call_codes,以便調用代碼和主題不同 – Mike 2013-04-03 19:07:46

+0

@Mike我更新了我的答案,我仍在考慮是否有更好的解決方案,但它應該可以工作 – fthiella 2013-04-03 19:16:08

+0

非常感謝。那就是我正在尋找的:) – Mike 2013-04-03 19:45:02

相關問題