如何用单条SQL语句从Candidate表取最小值并写入MinTotal表?
单条SQL实现获取最小值并写入表
当然可以用单条SQL语句完成这个需求!不过你当前的语句存在几个需要修正的小问题:
- 你引用了
CandidateID.TotalVotes,但实际表名应该是Candidate(从你提供的表信息来看) - 直接在
UPDATE语句中使用聚合函数MIN()时,需要通过子查询的方式来计算这个最小值,否则数据库无法正确解析。
正确的UPDATE写法(适用于MinTotal表已有记录的情况)
如果MinTotal表已经存在一条或多条记录,想要把所有记录的min_total列都设置为Candidate表中TotalVotes的最小值,可以用下面的语句:
UPDATE MinTotal SET min_total = (SELECT MIN(TotalVotes) FROM Candidate);
这个语句的逻辑是:先通过子查询(SELECT MIN(TotalVotes) FROM Candidate)算出Candidate表中TotalVotes的最小值,再将这个值赋值给MinTotal表的min_total列。
补充:如果MinTotal表为空,需要插入记录的情况
如果MinTotal表目前没有任何数据,想要插入一条包含最小值的记录,可以用INSERT...SELECT语句:
INSERT INTO MinTotal (min_total) SELECT MIN(TotalVotes) FROM Candidate;
另一种JOIN写法(部分数据库如MySQL支持)
你也可以通过JOIN子查询的方式实现更新,这种写法在某些场景下性能更优:
UPDATE MinTotal JOIN (SELECT MIN(TotalVotes) AS min_val FROM Candidate) AS sub_query SET MinTotal.min_total = sub_query.min_val;
内容的提问来源于stack exchange,提问作者BigBetty
相关产品推荐
相关产品推荐

