gpt4 book ai didi

mysql - 如何在 SET 子查询中引用外表?

转载 作者:行者123 更新时间:2023-11-29 00:11:06 24 4
gpt4 key购买 nike

假设我有这些表:

create table letter (id_letter bigint, id_group_table bigint, letter char(1));  
create table group_table (id_group_table bigint, id_whatever bigint, champion char(1));
create table whatever (id_whatever bigint);

我想更新 group_table 以便我可以在 champion 列中设置 letter 表中出现次数最多的字母与 group_table 中的每一行相关。今天我必须在我的应用程序中迭代 group_table 中的所有行并对每一行运行查询以发现最常用的字母是什么......我想在一次更新中做到这一点,是否可能?

这是我正在尝试的(但不起作用):

update group_table gt
set gt.champion =
(
select inner_champ from
(
select le.letter as inner_champ, count(*) from letter le
where le.id_group_table = gt.id_group_table
group by le.letter
order by count(*) desc
limit 1
)
)
where gt.id_whatever in (1,2,3,4);

MySQL 不允许我使用 gt.id_group_table 来引用子查询中的 group_table...是否可以这样做?

谢谢!!

最佳答案

您可以在内部查询中单独使用 group_table 执行 JOIN,如下所示

update group_table 
join
(
select letter,
id_group_table,
count(distinct id_group_table) as occurences
from letter
group by letter
having max(occurences)
) tab on group_table.id_group_table = tab.id_group_table
set champion = tab.letter
where group_table.id_whatever in (1,2,3,4);

关于mysql - 如何在 SET 子查询中引用外表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25008286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com