sql >> Databáze >  >> RDS >> Mysql

Jak mohu optimálně použít COALESCE() v klauzuli WHERE?

Výpočet můžete provést pomocí dvou samostatných poddotazů:

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';

Indexy lze použít pro každý poddotaz, takže by to mělo být celkově rychlejší. Mimochodem, nemusíte si dělat starosti s NULL hodnoty, protože COUNT(*) v korelovaném poddotazu vždy vrátí hodnotu. Pokud nic neodpovídá, hodnota bude 0 .




  1. Co způsobuje chybu Více není rozpoznáno... při spuštění Postgresql 11 na počítači se systémem Windows?

  2. Nelze dešifrovat pomocí pgcrypto z AES-256-CBC, ale AES-128-CBC je v pořádku

  3. Přístup ke vzdálené databázi mysql z příkazového řádku

  4. Jak upgradovat vlastní hostovaný wordpress a nainstalované pluginy živého webu na nejnovější dostupné verze, aniž byste museli čelit problémům?