2013-02-19 124 views
1

我有两个表:第一个存储主要信息,第二个存储一些额外的信息。我需要借助存储在第二个表中的一些数据来更新第一个表。带有连接状态的Sql更新

我的SELECT语句工作

SELECT news.news_id, 
     news.title, 
     news.cat_id, 
     news.sub_cat_id, 
     news_extra.date_vision_tr 
FROM news_extra 
    JOIN news 
     ON news.news_id = news_extra.news_id 
WHERE news.cat_id=1 AND sub_cat_id=5 AND news_extra.date_vision_tr < CURDATE() 

比我试过这样

UPDATE news SET news.sub_cat_id=8 
FROM news 
    INNER JOIN news_extra 
     ON news.news_id = news_extra.news_id 
WHERE news.cat_id=1 AND sub_cat_id=5 AND news_extra.date_vision_tr < CURDATE() 

但它不工作UPDATE语句。发生此错误

*您的SQL语法错误;检查与您的MySQL服务器版本对应的手册,在正确的语法附近使用 'FROM news INNER JOIN news_extra ON news.news_id = news_extra.news_id WHERE news。'在第2行*

回答

1

您使用的语法是SQL Server

这里是MySQL

UPDATE news a 
     INNER JOIN news_extra b 
      ON a.news_id = b.news_id 
SET  a.sub_cat_id = 8 
WHERE a.cat_id = 1 and 
     sub_cat_id = 5 and 
     b.date_vision_tr < CURDATE() 
+0

非常感谢。 – pikk 2013-02-19 09:22:56

+0

不客气':D' – 2013-02-19 09:23:45

0

的语法,你必须熟悉SQL Server的更多。您正在使用的语法将在SQLServer中工作。对于MySQL:

UPDATE news 
INNER JOIN news_extra 
ON news.news_id = news_extra.news_id 
SET news.sub_cat_id=8 
WHERE news.cat_id=1 and sub_cat_id=5 and news_extra.date_vision_tr < CURDATE() 

- 试试这种方法。

Check similar thread