如何在MySQL中使用UPDATE和SELECT

Tom*_*nal 0 mysql sql mysql-error-1064

我正在使用最新的MySQL.

我有两张桌子:backlinkspages.

我正在尝试更新cache_links表中pages为某个网址调用的列.该列应该等于backlinkswhere 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'");
Run Code Online (Sandbox Code Playgroud)

我一直在尝试构建的查询看起来像这样:

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/'
Run Code Online (Sandbox Code Playgroud)

我认为,问题在于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
Run Code Online (Sandbox Code Playgroud)

任何帮助是极大的赞赏.万分感谢!

Mar*_*ith 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/'
Run Code Online (Sandbox Code Playgroud)