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

MySQLは結果を適切に比較および除外します

    今、私はそれを理解していると思います。

    ユーザーが各質問に対して1つの回答しかない場合、これは機能するはずです:

    select ua.quid,
           GROUP_CONCAT(IF(uid=1,answer,'') SEPARATOR '') as a1,
           GROUP_CONCAT(IF(uid=20008,answer,'') SEPARATOR '') as a2
    from user_answers ua
    where importance <> 1 and uid in (1, 20008)
    group by ua.quid
    having sum(uid = 1) > 0 and
           sum(uid = 20008) > 0 and
           max(case when uid = 1 then answer end) <> max(case when uid = 20008 then answer end);
    

    編集:

    もちろん、ユーザーは 複数の答えがあります。これは私をjoinに向かって押し進めています 集計のみのアプローチではなく、アプローチ。残念ながら、このようなアプローチにはfull outer joinが必要です。 、MySQLはサポートしていません。それでは、まずは答えで集計してみましょう。ユーザーは2人しかないため、値をピボットします:

    select ua.quid,
           GROUP_CONCAT(IF(user1 > 0, answer, '') SEPARATOR '') as a1,
           GROUP_CONCAT(IF(user20008 > 0, answer, '') SEPARATOR '') as a2
    from (select ua.quid, ua.answer,
                 max(case when ua.uid = 1 then 1 else 0 end) as user1,
                 max(case when ua.uid = 20008 then 1 else 0 end) as user20008
          from user_answers ua
          where importance <> 1 and ua.uid in (1, 20008)
          group by ua.quid, ua.answer
         ) t
    where t.user1 = 0 or t.user20008 = 0
    group by ua.quid;
    



    1. 新しいSQLServerカーディナリティ推定器の最初の外観

    2. オラクルヘルプコンマがありません

    3. SQL Serverデータベーステーブルにデータテーブルを挿入するにはどうすればよいですか?

    4. MySQLでいくつのテーブルを結合できますか?