2010-11-29 37 views
0

我正在使用最新的MySQL。如何在MySQL中使用UPDATE SELECT

我有兩個表格:backlinkspages

我試圖更新cache_linkspages中某個URL。該列應等於backlinks中的行數,其中destination = url

我能做到這一點的,像這樣我的應用程序的語言,如果我的意思做的是不明確的:

$myURL = "http://google.com/"; 

$numLinksResult = mysqli_query($c, "SELECT count(*) AS `num` FROM `backlinks` WHERE `same_domain` = FALSE AND `url` = '$myURL'"); 
$numLinksRow = mysqli_fetch_assoc($numLinksResult); 
$numLinks = $numLinksRow['num']; 

mysqli_query($c, "UPDATE `pages` SET `links` = $numLinks WHERE `url` = '$myURL'"); 

我一直在試圖目前建立的查詢看起來是這樣的:

UPDATE `pages`, `backlinks` SET pages.`cache_links` = backlinks.count(*) 
    WHERE backlinks.`destination` = pages.`url` 
     AND backlinks.`same_domain` = FALSE 
     AND pages.`url` = 'http://google.com/' 

我想問題在於backlinks.count(*)。我不知道我在做什麼錯。我得到的錯誤是:

#1064 - You have an error in your SQL syntax; check the manual that corresponds 
to your MySQL server version for the right syntax to use near '*) 
WHERE backlinks.`destination` = pages.`url` AND backlinks.`same_' at line 1 

任何幫助,非常感謝。萬分感謝!

回答

8

您可以使用相關的子查詢。

UPDATE `pages` 
SET pages.`cache_links` = 
     (SELECT COUNT(*) 
     FROM backlinks 
     WHERE backlinks.`destination` = pages.`url` 
     AND  backlinks.`same_domain` = FALSE 
     ) 
WHERE pages.`url` = 'http://google.com/' 
+0

工作就像一個魅力。我愛你 - 感謝一噸!我會在7分鐘內接受你的回答。 – 2010-11-29 23:22:46