首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中使用带有SELECT的UPDATE

如何在MySQL中使用带有SELECT的UPDATE
EN

Stack Overflow用户
提问于 2010-11-30 07:15:21
回答 1查看 231关注 0票数 0

我使用的是最新的MySQL。

我有两个表:backlinkspages

我正在尝试为某个url更新表pages中名为cache_links的列。该列应等于destination = urlbacklinks中的行数。

我可以在我的应用程序语言中这样做,以防我的意图不清楚:

代码语言:javascript
复制
$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'");

我目前正在尝试构建的查询看起来像这样:

代码语言:javascript
复制
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(*)。我不知道我做错了什么。我得到的错误是:

代码语言:javascript
复制
#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

任何帮助都是非常感谢的。非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-30 07:17:29

您可以使用相关子查询。

代码语言:javascript
复制
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/'
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4309070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档