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

SQLServerでDELETEパススルークエリを実行する方法

    SQL Serverでは、OPENQUERY 行セット関数を使用すると、リンクサーバーでパススルークエリを実行できます。

    OPENQUERY FROMで一般的に参照されます テーブルであるかのようにクエリの句。ただし、INSERTのターゲットテーブルとして参照することもできます。 、UPDATE 、またはDELETE ステートメント。

    この記事では、OPENQUERYの使用例を紹介します。 DELETEを実行するには パススルークエリ。

    Homerというリンクサーバーがあるとします。 Petsにテーブルがあります Catsというデータベース 次のデータを使用します。

    SELECT * FROM OPENQUERY (
        Homer, 
        'SELECT * FROM Pets.dbo.Cats'
        );

    結果:

    +---------+------------+
    | CatId   | CatName    |
    |---------+------------|
    | 1       | FluffDupp  |
    | 2       | Scratch    |
    | 3       | Short Tail |
    +---------+------------+

    そして、データベースから猫の1匹を削除したいとします。

    DELETEを使用してそれを行うことができます このように、リンクサーバーに対するパススルークエリ。

    DELETE OPENQUERY (
        Homer, 
        'SELECT CatName FROM Pets.dbo.Cats WHERE CatId = 2'
        );

    結果:

    (1 row affected)

    結果を確認する

    これで、SELECTを実行できます 結果を確認するためのパススルークエリ。

    SELECT * FROM OPENQUERY (
        Homer, 
        'SELECT * FROM Pets.dbo.Cats'
        );

    結果:

    +---------+------------+
    | CatId   | CatName    |
    |---------+------------|
    | 1       | FluffDupp  |
    | 3       | Short Tail |
    +---------+------------+

    予想どおり、2番目の行が削除され、残りの行は2つだけになりました。

    注意すべき点の1つは、OPENQUERY 引数に変数を受け入れません。


    1. Mac OS X-EnvironmentError:mysql_configが見つかりません

    2. グループ化された結果の各グループの上位nレコードを取得します

    3. PL /Java1.5.2をPostgreSQL11にインストールします

    4. SQL Serverで大文字を小文字に変換する方法– LOWER()