首页 > 解决方案 > 更新查询不止一件事

问题描述

更新具有最低值的 S_Loc、S_Code。

我不断收到错误错误代码:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 library.S_Code = s.S_Code 上使用 near 的正确语法

Update library 
inner join (
    Select S_Code 
    from Book 
    group by S_Code 
    having count(xy) = min(count(xy)) s 
on Book.S_Code = s.S_Code 
set S_Loc = 'CB-3322';

它使用重复最少的 s_code 更改值,以获得新的 s_loc。

标签: mysql

解决方案


您不能嵌套聚合函数,例如MIN(COUNT(ISBN)). 您需要另一个子查询来获得它。

Update library 
inner join (
    Select S_Code 
    from Library 
    group by S_Code 
    having count(*) = (SELECT COUNT(*) AS c FROM library GROUP BY S_Code ORDER BY c LIMIT 1)) s 
on library.S_Code = s.S_Code 
set S_Loc = 'CB-3322';

推荐阅读