2017-11-17 13 views
0

多くのSQL Serverテーブルのフィールドを更新する必要があるという問題があります。顧客の注文IDは、標準書式 "C000001"(文字の後に数字が続く)に従わないすべてのレコードで更新する必要があります。変更が必要なレコードは、約300個あり(以前のデータベースバージョンからレコードを引き継ぐ)、対応するリンクテーブルもあります。SQL ServerでSQLクエリを更新する

私は自分のSQL上で少し錆びているので、コマンドを確認したいと思います。

私の提案コマンド

UPDATE Customer_Order 
SET ID = CONCAT('X', ID) 
WHERE ID not like 'c%'; 

UPDATE Customer_Order_Line 
SET Cust_Order_ID = CONCAT('X', Cust_Order_ID) 
WHERE Cust_Order_ID not like 'c%'; 

UPDATE Quote_Order 
SET Cust_Order_ID = CONCAT('X', Cust_Order_ID) 
WHERE Cust_Order_ID not like 'c%'; 

等...(私は上記と同じ更新する約12追加のテーブルを持っている)

支援は、事前に感謝を高く評価しています。ちょうどあなたの更新を確認するためにアップデートが選択させる

+0

ここでの質問は何ですか? –

+0

それを手作業でやってみてください...あなたがそれを打ち終わったら、まだ誰かがずっと良い答えを投稿していないでしょう。それはとにかくただのものです。 CTEでそれらをすべて選択してcteを更新することはできますが、それはあなたに混乱してしまいます – scsimon

+0

更新している列には外部キーが関連付けられていませんか?私はIDという名前の列が主キー(少なくとも部分的に)であると期待しているからです。そうであれば、これは機能しません。 – SMor

答えて

0

ここでフォーマットされたコメントの詳細..

あなたはこれをしたいときはいつでも、:

SELECT ID, CONCAT('X', ID) as NewID 
FROM Customer_Order 
WHERE ID not like 'c%' 

NewID列が何であることを確認してくださいにIDを置き換えてください。

+0

これは疑わしいものとして、私は他のテーブルに対して試行し、テストインスタンスでも実行します。どうもありがとう! – Technoid

+0

NEWID ようCUST_ORDER_ID] \t、CONCAT( 'X'、[CUST_ORDER_IDを])を選択し[INVTEST] FROM [DBO]。[QUOTE_ORDER] CUST_ORDER_ID 'はCの%' – Technoid

+0

を好まない 魚に男を教える@Technoid彼らは言う:)あなたが欠けていた検証クエリを提供してうれしい。 –