0

一个(据说)简单的更新结果并不是那么简单。无论我从其他已回答的问题中尝试哪种语法,我都会从 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';

你认为什么会起作用?

4

3 回答 3

1

可能是一个愚蠢的问题,但 news_content.active 是否已经等于“不”?

于 2013-02-20T13:43:34.107 回答
0

是否有任何由此返回的行:

select *
from news_content
LEFT JOIN
    news_map
ON      news_map.newsID = news_content.rowID
WHERE   news_map.catID = 170
于 2013-02-20T13:39:08.350 回答
0

尝试这个:

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

一般来说,我更喜欢在 UPDATE 上使用子查询而不是 JOIN,因为它是一种更标准的方式。

于 2013-02-20T15:29:09.053 回答