Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да използвам оптимално COALESCE() в клаузата WHERE?

Можете да направите изчислението с две отделни подзаявки:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL функция SUM без групиране на данни

  2. Как да създадете MySQL база данни с помощта на интерфейса на командния ред (CLI)

  3. Групово вмъкване на SQL израз

  4. командата mysqldump не работи?

  5. Върнете клеймо за време с подготвено изявление