相关疑难解决方法(0)

MySQL/SQL:使用更新表本身的相关子查询进行更新

我有一个通用的问题,我将尝试使用一个例子来解释.

假设我有一个包含字段的表:"id","name","category","appearances"和"ratio"

我的想法是,我有几个项目,每个项目都与一个类别有关并且多次"出现".比率字段应包括每个项目出现的百分比,超出该类别中项目的总出现次数.

在伪代码中我需要的是以下内容:

  • 对于每个类别,
    查找与其相关的项目的外观总和.例如,它可以用(select sum("appearances") from table group by category)完成

  • 对于每个项目,
    将比率值设置为项目的外观除以上面类别的总和

现在,我正在尝试使用单个更新查询来实现此目的,但似乎无法做到这一点.我认为我应该做的是:

update Table T    
set T.ratio = T.appearances /   
(    
select sum(S.appearances)    
from Table S    
where S.id = T.id    
)
Run Code Online (Sandbox Code Playgroud)

但MySQL不接受更新列中的别名T,我没有找到实现此目的的其他方法.

有任何想法吗?

mysql sql correlated-subquery sql-update

20
推荐指数
2
解决办法
4万
查看次数

使用concat时,请获取额外的逗号','

我已经写了一个存储过程sqlyog.除了concat语句之外,它很长并且执行所有所需的功能,因此我只列出该特定查询.

UPDATE recipes_new 
SET co_auths = CONCAT(co_auths,',',c1id) 
WHERE id = name_in; 
Run Code Online (Sandbox Code Playgroud)

我基本上希望在两个字段中分离,并且此语句放在游标中,因此它是迭代的.co_auths目前为空,所以我得到的结果为1,2,3,因为我希望它是1,2,3.任何猜测最合适的解决方案是什么?

mysql

6
推荐指数
1
解决办法
8043
查看次数

标签 统计

mysql ×2

correlated-subquery ×1

sql ×1

sql-update ×1