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

複数の列を持つSQLサーバーの「In」句

    この構文はSQLServerには存在しません。 Andの組み合わせを使用する およびOr

    SELECT * 
    FROM <table_name> 
    WHERE 
      (value_type = 1 and CODE1 = 'COMM')
      OR (value_type = 1 and CODE1 = 'CORE') 
    

    (この場合、value_typeは両方の組み合わせで同じ値と比較されるため、短くすることができます。複数のフィールドを持つOracleのINのように機能するパターンを表示したかっただけです。)

    サブクエリでINを使用する場合は、次のように言い換える必要があります。

    オラクル:

    SELECT * 
    FROM foo 
    WHERE 
      (value_type, CODE1) IN (
        SELECT type, code 
        FROM bar
        WHERE <some conditions>)
    

    SQL Server:

    SELECT * 
    FROM foo 
    WHERE 
      EXISTS (
        SELECT * 
        FROM bar 
        WHERE <some conditions>
          AND foo.type_code = bar.type 
          AND foo.CODE1 = bar.code)
    

    場合によっては、内部結合など、他の方法もあります。



    1. 複数行のデータを含むMySQLLOADDATA

    2. PHPとMySQLを使用した動的検索クエリの作成

    3. MySQLFULLTEXTクエリの問題

    4. フォーラム投稿などの「編集」機能