从select语句更新MySQL中的两列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从select语句更新MySQL中的两列相关的知识,希望对你有一定的参考价值。

我正在尝试更新mysql中的两列:

update table1
set (table1.score, table1.count) = 
(select (table2.maxScore - table2.score ) as diff, count(*)
from table2
where (table2.maxScore - table2.score) <= 600
and table2.age > 50
group by diff);

但是,MySQL不支持这种语法。我已经看过一些使用JOIN的例子,但我不能在这里工作。非常感谢您的帮助!

答案

也许你应该单独设置它们的值,

UPDATE scoresUniverse 
SET scoreUniver.GNfemScore = (Analytics.GN_recency_max_score - Analytics.GN_recency_score ),
ScoresUniverse.GNfemCount = (Select count(*) from Analytics.GN_recency_score where (Analytics.PR_recency_max_score - Analytics.PR_recency_score) <= 600 and Analytics.Older_female_50 > 0)
另一答案

我想到了! MySQL肯定可以一次更新多个列。我需要更改我的原始查询,因为MySQL在更新多个列时需要使用JOIN和ON。为了证明这一点,我在我的例子中添加了一个额外的列“secondCol”。我已经浏览了整个网络,但从未找到答案。我希望这可以帮助一些人。

 update table1 join
 (select (table2.maxScore - table2.score ) as diff, count(*) as count
 from table2
 where (table2.maxScore - table2.score) <= 600
 and table2.age > 50
 group by diff) as scores
 on table1.count = scores.count
 set table1.score = scores.diff, table1.secondCol = scores.count;

以上是关于从select语句更新MySQL中的两列的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis select返回值为map时,选取表字段的两列作为key,value

在 Oracle 存储过程中比较 IF 语句中的两列

MySQL SELECT 语句的两行之间的区别

UNION 语句连接同一个表中的两列

Mysql比较两个表中的两列

在 MySQL 中使用 GPS 坐标快速检索 SELECT 语句