[英]MySQL Update with Subquery
我在嘗試使用更新查詢時遇到了一個令人煩惱的問題...以下語句應將channels.media_view_count更新為子查詢的結果(對於所有通道)。
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'
我以為我可以從子查詢中訪問通道表(別名為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
像這樣嘗試...雖然沒有測試:) ..
從概念上講,它應該起作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.