[英]How to update fields form a select statement in MySql with a WHERE clause?
我正在尝试从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
如果我正确理解了您的问题,我认为您需要以下内容:
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_subject
更新为从call_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;
(不知道是否可以仅使用一个查询来完成此操作)。 它可能很慢,但应该可以。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.