2014-04-14 166 views
1

編輯的匹配值一個表:這是SQL Server中, MySQL作爲我mistagged它是更新基於另一個

我在下面的語句我想更新F4105表,將其指定爲'a',將COUNCS列設置爲空白,其中COLEDG列等於07 ..但是,在此過程中,語句需要匹配它的COLITM列與F4101的IMLITM列,並確保IMGLPT列的F4101不包含以FG,IN或RM開頭的值。

update CRPDTA.f4105bak a 
set a.COUNCS=0 
where a.COLEDG='07' 
and exists (
select b.IMLITM from CRPDTA.f4101bak b 
where a.COLITM=b.IMLITM 
and substring(b.IMGLPT,1,2) not in ('FG','IN','RM')); 

我可以刪除第二行後,運行該語句爲SELECT *,但是當我嘗試運行該語句,高於它拋出的「A」在第一線以下異常錯誤:

消息102,級別15,狀態1,行1個
附近有語法錯誤 'A'。

謝謝!

+0

是你確定?你的RDBMS是MySQL嗎?它更像SQL SERVER。 –

+0

它是sql服務器,而不是mysql。對不起,我迷惑了。 – dubfish

回答

1

不能更新關鍵字後重新命名,只在 「FROM」 子句:

事情是這樣的:

update a 
set COUNCS=0 
FROM CRPDTA.f4105bak a 
where a.COLEDG='07' 
and exists (
select b.IMLITM from CRPDTA.f4101bak b 
where a.COLITM=b.IMLITM 
and substring(b.IMGLPT,1,2) not in ('FG','IN','RM')); 

反而會更好,因爲:

update a 
set COUNCS=0 
FROM CRPDTA.f4105bak a 
    INNER JOIN CRPDTA.f4101bak b ON 
     a.COLITM=b.IMLITM 
WHERE a.COLEDG='07' 
and substring(b.IMGLPT,1,2) not in ('FG','IN','RM')); 
+0

你確定嗎?在MySQL中它合法嗎? –

+0

錯誤消息看起來像SQL Server ... – Denis

+0

與第二個語句使用內部連接去..我實際上已經嘗試做一個內部連接,但我的語法是關閉的地方。工作得很好!謝謝! – dubfish