gpt4 book ai didi

带有子查询的 MySQL 更新

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

我有一个更新查询的恼人问题,我正在尝试开始工作...以下语句应该将 channels.media_view_count 更新为子查询的结果(对于所有 channel )。

UPDATE channels c
SET c.media_view_count = (
SELECT SUM(t.view_count)
FROM (
SELECT DISTINCT m.viewkey, m.view_count
FROM media m
INNER JOIN participants p ON m.id = p.medium_id
WHERE p.user_id = c.id AND m.is_viewable = 1
AND (p.pending = 0)
) AS t
);

子查询独立运行良好(当为 c.id 指定实际 ID 时,如 47778 或其他),但是当我执行此语句时,我得到:

ERROR 1054 (42S22): Unknown column 'c.id' in 'where clause'

我想我可以从子查询中访问 channel 表(别名为 c)?我是不是遗漏了什么或者我完全错了?

感谢任何和所有的帮助:)

谢谢,

  • 杰夫

最佳答案

UPDATE channels c, (
SELECT t.user_id, SUM(t.view_count) cnt
FROM (
SELECT DISTINCT p.user_id, m.viewkey, m.view_count
FROM media m
INNER JOIN participants p ON m.id = p.medium_id
WHERE m.is_viewable = 1
AND (p.pending = 0)
) AS t GROUP BY t.user_id ) temp
SET c.media_view_count = temp.cnt
WHERE c.id = temp.user_id

像这样尝试...虽然没有测试 :) ..
从概念上讲,它应该可以工作

关于带有子查询的 MySQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18153081/

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