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

WHERE句でCOALESCE()を最適に使用するにはどうすればよいですか?

    2つの別々のサブクエリを使用して計算を行うことができます:

    select coalesce(qa2.subject, qa.subject) as question_subject,
           qa.body,
           ( (select count(*)
              from viewed_items vi
              where qa.related = vi.question_id
             ) +
             (select count(*)
              from viewed_items vi
              where qa.related is null and qa.id = vi.question_id
             )
            ) as total_question_viewed
    from questions_and_answers qa left join
         questions_and_answers qa2
         on qa.related = qa.id 
    where body like ':entry';
    

    サブクエリごとにインデックスを使用できるため、全体的に高速になるはずです。ちなみに、NULLについて心配する必要はありません。 COUNT(*)であるため、値 相関サブクエリでは、常に値を返します。一致するものがない場合、値は0になります 。




    1. 同じ列に2つのカウントで選択

    2. mysqlで比較するコンマ区切りのフィールド

    3. Dockerにmysqlとapacheのスーパーセットをセットアップし、ブリッジネットワークで接続していますが、SQLAlchemyのURIはどうなりますか?

    4. 単一のスペースを文字列で比較する方法