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

MySQL:正確に2つの行が同じIDを共有しているが、異なるuserIDを持つIDを取得しています

    これは、サブクエリをまったく使用しない、パフォーマンスの高いアプローチです。結果をHavingで除外するだけです。 条件付き集計を使用した句:

    SELECT 
      conversation_id 
    FROM assoc_user__conversation 
    GROUP BY conversation_id 
    HAVING 
      -- all the rows to exists only for 1000001 or 1000002 only
      SUM(user_id IN (1000001, 1000002)) = COUNT(*) 
    

    結果

    | conversation_id |
    | --------------- |
    | 10              |
    

    DBフィドルで表示

    可能な条件付き集計の別のバリエーションは次のとおりです。

    SELECT 
      conversation_id 
    FROM assoc_user__conversation 
    GROUP BY conversation_id 
    HAVING 
      -- atleast one row for 1000001 to exists
      SUM(user_id = 1000001) AND  
      -- atleast one row for 1000002 to exists
      SUM(user_id = 1000002) AND  
      -- no row to exist for other user_id values
      NOT SUM(user_id NOT IN (1000001, 1000002)) 
    


    1. RefCursorの戻り型を使用してOracleストアドプロシージャをテストするにはどうすればよいですか?

    2. SQL ALTER DATABASE構文–DBMSによってリストされます

    3. Djangoプロジェクトを外部ライブラリを使用してGoogleCloudAppEngineにデプロイします

    4. SQLLDRによって複数のcsvを1つのテーブルにロードします