繁体   English   中英

如何使用WHERE子句在MySql中更新选择语句的字段?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM