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

Oracleは、値のリストと完全に一致する行を取得します

    これを試してください:

    SELECT OrderID 
    FROM OrderDetailTable JOIN OrderedTable USING (ItemID)
    GROUP BY OrderID 
    HAVING COUNT(DISTINCT ItemID) = (SELECT COUNT(DISTINCT ItemID) FROM OrderedTable)
    

    一言で言えば、アイデアは次のとおりです。

    • ItemIDでOrderedTableに一致するOrderDetailTable行の数を数えます
    • 次に、それをOrderedTableのItemIDの総数と比較します。

    これらの2つの数値が等しい場合、指定されたOrderIDにはすべてのItemIDが「含まれます」。一方が他方よりも小さい場合、指定されたOrderIDに含まれていないItemIDが少なくとも1つあります。

    主キーに応じて、DISTINCT 必要ないかもしれません(害はありませんが)。



    1. Mysql UUID_SHORT()はUUID()に匹敵しますか

    2. OracleSQLサンプルデータベース

    3. ローカルインデックスによるページングのためのOracleプランのパーティションごとにSTOPKEYがありません

    4. このSQLでは何を指していませんか?