我使用的是最新的MySQL。
我有两个表:backlinks和pages。
我正在尝试为某个url更新表pages中名为cache_links的列。该列应等于destination = url的backlinks中的行数。
我可以在我的应用程序语言中这样做,以防我的意图不清楚:
$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任何帮助都是非常感谢的。非常感谢!
发布于 2010-11-30 07:17:29
您可以使用相关子查询。
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/'https://stackoverflow.com/questions/4309070
复制相似问题