2012-10-03 164 views
0
更新

我想执行类似的东西:MySQL中,从选择结果

   UPDATE page_results 
      SET cache_valid=0 
      WHERE link_id IN (SELECT DISTINCT l.link_id 
      FROM link_results AS l 
      INNER JOIN page_results AS p ON p.link_id=p.link_id 
      WHERE has_no_robots=0 AND cache_valid=1 AND cache_to_expire=1 AND status_code!='404' AND href!='' AND anchor_match!='' AND nofollow=0) 

基本上,我想更新所有的结果,这是派生表采取..

其他解决办法,我已经是这样的:

   UPDATE (SELECT DISTINCT l.link_id 
      FROM link_results AS l 
      INNER JOIN page_results AS p ON p.link_id=p.link_id 
      WHERE has_no_robots=0 AND cache_valid=1 AND cache_to_expire=1 AND status_code!='404' AND href!='' AND anchor_match!='' AND nofollow=0) 
      SET cache_valid=0 

但没有工作或者..有办法acheive我的目标是什么?

+0

什么是你在第一次收到错误例如? – Cosmin

回答

1

这里是这样做的正确的语法:

UPDATE page_results t1 
INNER JOIN link_results AS l ON t1.link_id = l.link_id 
SET t1.cache_valid = 0 
WHERE t1.has_no_robots = 0 
    AND t1.cache_valid  = 1 
    AND t1.cache_to_expire = 1 
    AND t1.status_code != '404' 
    AND t1.href!   = '' 
    AND t1.anchor_match != '' 
    AND t1.nofollow  = 0; 
0

这是因为在连接子句错误条件p.link_id=p.link_id,尝试此查询:

UPDATE page_results p 
     INNER JOIN link_results l 
      ON p.link_id = l.link_id 
    SET p.cache_valid = 0 
    WHERE has_no_robots = 0 AND 
     cache_valid = 1 AND 
     cache_to_expire = 1 AND 
     status_code != '404' AND 
     href != '' AND 
     anchor_match != '' AND 
     nofollow = 0;