sql >> データベース >  >> RDS >> Sqlserver

別のテーブルからSQLServerCEテーブルを更新する方法

    Books Onlineエントリに基づいているため、2回目の試行は機能しません。更新用 、SQLCEではFROMは許可されていません 更新ステートメントの句。

    テストするSQLCompactEditionがありませんが、これでうまくいく可能性があります:

    UPDATE JOBMAKE
    SET WIP_STATUS = '10sched1'
    WHERE EXISTS (SELECT 1
                  FROM JOBVISIT AS JV
                  WHERE JV.JBT_TYPE   = JOBMAKE.JBT_TYPE
                  AND   JV.JOB_NUMBER = JOBMAKE.JOB_NUMBER
                  AND   JV.JVST_ID    = @jvst_id
                 )
    

    JOBMAKEをJMとしてエイリアスして、クエリを少し短くできる可能性があります。

    編集

    コメントで提起された質問(JOBVISITの値を使用してJOBMAKEの値を更新する方法)に関連しているため、SQL CEの制限について100%確信が持てません。外部クエリでEXISTS句の内容を参照しようとすることは、私が遭遇したSQLダイアレクトではサポートされていませんが、試すことができる別の方法があります。これはテストされていませんが、SQL CEが相関サブクエリをサポートしているように見えるため、機能する可能性があります。

    UPDATE JOBMAKE 
    SET WIP_STATUS = (SELECT JV.RES_CODE 
                      FROM JOBVISIT AS JV 
                      WHERE JV.JBT_TYPE = JOBMAKE.JBT_TYPE 
                      AND   JV.JOB_NUMBER = JOBMAKE.JOB_NUMBER 
                      AND   JV.JVST_ID = 20
                     )
    

    ただし、制限があります。 JOBVISITの複数の行がJOBMAKEの各行に対して再調整されると、このクエリは失敗します。これが機能しない場合(または、内側のクエリを外側の行ごとに1つの行に直接制限できない場合)、実行することができます。カーソルを使用した行ごとの更新。




    1. Oracle接続/クエリのタイムアウト

    2. Windowsのコマンドプロンプトからmysqlクエリを実行できますか?

    3. 日付範囲内の曜日の日付を取得します

    4. Oracleテーブルのグループごとに最大x行になるように行を削除します