2013-04-03 44 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

相关问题