Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL连接更新_Mysql_Sql_Join - Fatal编程技术网

MySQL连接更新

MySQL连接更新,mysql,sql,join,Mysql,Sql,Join,一个(据推测)简单的更新结果并不是那么简单。无论我从其他回答的问题中尝试哪种语法,我都会从MySQL得到相同的回答: 匹配0行受影响的行:124已更改:0警告:0 尝试1: UPDATE news_content, news_map SET news_content.active='no' WHERE news_content.rowID = news_map.newsID AND news_map.catID = 170; 尝试2: UPDATE news_content LEFT JOI

一个(据推测)简单的更新结果并不是那么简单。无论我从其他回答的问题中尝试哪种语法,我都会从MySQL得到相同的回答:

匹配0行受影响的行:124已更改:0警告:0

尝试1:

UPDATE news_content, news_map
SET news_content.active='no'
WHERE news_content.rowID = news_map.newsID
AND news_map.catID = 170;
尝试2:

UPDATE  news_content
LEFT JOIN
    news_map
ON      news_map.newsID = news_content.rowID
SET     news_content.active = 'no'
WHERE   news_map.catID = 170;
尝试3:

UPDATE 
news_content nc JOIN
news_map nm 
  ON nm.newsID = nc.rowID 
  AND nm.catID = 170
SET nc.active = 'no';

您认为哪种方法有效?

此方法是否返回任何行:

select *
from news_content
LEFT JOIN
    news_map
ON      news_map.newsID = news_content.rowID
WHERE   news_map.catID = 170

这可能是一个愚蠢的问题,但news\u content.active是否已经等于“no”?

尝试以下方法:

UPDATE news_content
SET active='no'
WHERE rowID IN (SELECT m.newsID FROM news_map m WHERE m.catID = 170);

一般来说,我更喜欢在更新时使用子查询而不是联接,因为这是一种更标准的方式。

所有语法都应该可以正常工作。你能提供样品记录吗?再次检查值。
从新闻内容nc JOIN news\u map nm ON nm.newsID=nc.rowID中选择计数(*),其中nm.catID=170和(nc.active“否”或nc.active为空)
return?@ypercube,它返回19在
news\u content
表上是否有任何更新触发器?我想这应该是一个注释
:)
@JW。是的)但是如何添加评论而不是答案?@walkerspace,关于:更新新闻内容集活动='no'来自新闻内容左加入新闻地图上的新闻地图。newsID=news\u content.rowID其中news\u map.catID=170@shibormot,MySQL给出了该查询中FROM部分的语法错误。有105个“否”和19个“是”。最可能的原因是。要更新的行已经
active='no'
(与其他DBMS相比,MySQL会进行检查。)