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

SQL Server 2008ManagementStudioがクエリの構文をチェックしていません

    hs_idの値を取得しています 外部クエリから。

    selectで、選択したテーブルの列を投影しないクエリを使用することは完全に有効です。 リスト。

    select 10 from HotelSupplier where id = 142
    

    whereと一致する数の行を含む結果セットを返します 句と値10 すべての行に対して。

    修飾されていない列参照は、最も近いスコープから外側に向かって解決されるため、これは相関サブクエリとして扱われます。

    このクエリの結果は、Photoからすべての行を削除することです。 ここで、hs_id HotelSupplierにid=142の行が少なくとも1つある限り、nullにはなりません(したがって、サブクエリは少なくとも1つの行を返します)

    これの効果を考えれば、もう少し明確になるかもしれません

    delete from Photo  where Photo.hs_id  in (select Photo.hs_id)
    

    もちろんこれは

    と同等です
    delete from Photo where Photo.hs_id = Photo.hs_id
    

    ちなみに、これは私が個人的にMicrosoftConnectで誤って報告した最も一般的な「バグ」です。 Erland Sommarskogは、SET STRICT_CHECKS ONのウィッシュリストにそれを含めています。



    1. oraclesqlからpandasdfへのデータのロードを高速化する方法

    2. MariaDBの日付から短い月の名前を取得する2つの方法

    3. Debian 5のphpMyAdminでMySQLを管理する(Lenny)

    4. ストアドプロシージャを使用して、SQLServer2005の文字列にサブ文字列が含まれているかどうかを確認します