0

私はそのようなことを実行しようとしています:

              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

しかし、それもうまくいきませんでした。私の目標を達成する方法はありますか?

4

2 に答える 2

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;
于 2012-10-03T13:30:10.190 に答える
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;
于 2012-10-03T13:30:09.880 に答える