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

サブクエリの形式が正しくない場合、T-SQLはテーブルからすべての行を削除します

    TableAID として TableA に存在しません 、クエリは TableB の列を使用しています .したがって、クエリは次と同じです:

    delete from TableB
    where id in (
      select TableB.TableAID
      from TableA
      where GUID = 'fdjkhflafdhf'
    )
      

    つまり、本質的には次のことを行っています:

    delete from TableB
    where id in (TableAID)
      

    サブクエリを使用している場合は、参照するときにテーブル名を言及するのが最善です。次の意志 例外をスロー:

     delete from TableB
        where id in (
          select TableA.TableAID
          from TableA
          where TableA.GUID = 'fdjkhflafdhf'
        )
      

    さらに、参照しているクエリがわかるようにエイリアスを使用します。

     delete from TableB
        where id in (
          select a.TableAID
          from TableA a
          where a.GUID = 'fdjkhflafdhf'
        )
      


    1. MariaDBでのUTC_TIMESTAMP()のしくみ

    2. 値を設定するためのPostgresql挿入トリガー

    3. SQLテーブルをクエリし、結果セットから重複する行を削除する方法

    4. PostgreSQLの利点