2017-07-06 10 views
0

サイトは既にSQL Serverストアドプロシージャを使用している.NETに組み込まれています。今私たちはMySQLにストアドプロシージャを変更しているので、PHPに変換しています。私はMySQLのストアドプロシージャの構文では、このアプローチの代替手段を必要MSSQLストアドプロシージャからMySQLへの変換

MERGE 
    INTO products T 
    USING SELECT STATEMENT 
WHEN MATCHED 
    THEN UPDATE STATEMENT 
WHEN NOT MATCHED 
     THEN INSERT STATEMENT 

:ストアドプロシージャの一

は、次のようにSQLストアドプロシージャで達成される複数の挿入および更新にはいくつかのコードがあります。どうすればいいのか教えてください。

+2

**自分でコードを書き込もうとします**。あなたが問題を抱えている場合は** [もっと研究している**](https://meta.stackoverflow.com/q/261592/1011527)の後**あなたが試したものを投稿してください** **動作しておらず、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を提供しています。 [質問する](http://stackoverflow.com/help/how-to-ask)の良い質問をお読みください。 [ツアーに参加する](http://stackoverflow.com/tour)と[this](https://meta.stackoverflow.com/q/347937/1011527)を必ず読んでください。 –

答えて

1

これをon duplicate key updateに置き換える必要があります。

このため、「一致」を指定する列には一意のキーが必要です。

注:これは(確かに)mergeコードをすべて置き換えることはありません。しかし、あなたの例は、まさにこのロジックを実装しているようです。そうでない場合は、ifupdateinsertの文を使用して、同じことをすることができます。

+0

これにより、レコードを更新するかどうかを決定するキー列以外の2つの列の組み合わせをどのように達成できますか。 – Ankit

関連する問題