2011-11-07 9 views
4

を更新するために、1つのデータベースから選択すること私は別のデータベースからSQL Serverでテーブルを更新する必要があると私はここに</p> <p>であることを行うにはどのように思っていた別の

UPDATE [Logix].[sysdba].[TICKET] (
    STATUSCODE) 
SELECT TICKETID, GM_NUMBER, STATUSCODE 
FROM [Logix_Dev].[sysdba].[TICKET] 
where GM_NUMBER <> '' 

私の例ですが、私はこれが間違った構文だと思っています...基本的には、Logix_DevデータベースのTICKETテーブルからすべてのレコードを選択し、TICKETIDと一致するLogixデータベースのステータスコードを更新します。

+1

データベースはSQL Serverの同じインスタンスにありますか? –

+0

はい......彼らは – Trace

+0

です@タマー - 私の答えはあなたのためにうまくいくはずです。 – JonH

答えて

6

あなたの人生をより楽にするためにエイリアスを使用する(同じインスタンス):

あなたが適切な列(TicketID?)でs.IDとl.IDを交換する必要があります。もちろん、
UPDATE l 
SET l.STATUSCODE=s.someVal 
FROM Logix.sysdba.Ticket l 
INNER JOIN Logix_dev.sysdba.ticket s 
ON s.ID = l.ID 

UPDATE l 
SET l.STATUSCODE=s.STATUSCODE 
FROM Logix.sysdba.Ticket l 
INNER JOIN Logix_dev.sysdba.ticket s 
ON s.TicketID = l.TicketID 
WHERE s.GM_NUMBER = '' 

彼らは同じインスタンス上にある場合は、2個のドットを必要としません。 (..)。それはあなたが2つのドット(..)を必要とするリンクサーバーまたは別のインスタンス上にある場合:

リンクサーバー:

UPDATE l 
SET l.STATUSCODE=s.someVal 
FROM Logix.sysdba.Ticket l 
INNER JOIN Logix_dev..sysdba.ticket s 
ON s.ID = l.ID 
+0

あなたは忘れてしまった 's.GM_NUMBER <> '' ' –

+0

@Drackir - 人に魚を教える - 魚を与えないでください。それは単なる追加です。 – JonH

+0

私の答えをコピーしていただきありがとうございます。 – misha

0

ここにある:

UPDATE [Logix].[sysdba].[TICKET] (
    STATUSCODE) 
SELECT TICKETID, GM_NUMBER, STATUSCODE 
FROM [Logix_Dev]..[sysdba].[TICKET] 
where GM_NUMBER <> '' 

お知らせ二点 DB名の後ろに。

+1

ダブルドットは、リンクされたサーバーまたは別のインスタンスの場合にのみ必要です。 – JonH

+0

実際には、ダブル・ドットは* DB *名の後ではなく、問合せの* server *名の後にあります。また、構文が間違っています。 –

+0

おっと、申し訳ありませんが、それはあなたではない、構文を間違っているのOPです。しかし、あなたはそれを盲目的にコピーすべきではないと私は思う。 –

関連する問題

 関連する問題