MySQL加入更新

时间:2013-02-20 13:34:10

标签: 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 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';

您认为有什么用?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

这是否有任何行返回:

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

答案 2 :(得分:0)

试试这个:

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

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