簡體   English   中英

MySQL更新與子查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM