Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak optymalnie używać COALESCE() w klauzuli WHERE?

Możesz wykonać obliczenia za pomocą dwóch oddzielnych podzapytań:

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

Indeksy mogą być używane dla każdego podzapytania, więc powinno być ogólnie szybsze. Przy okazji, nie musisz się martwić o NULL wartości, ponieważ COUNT(*) w skorelowanym podzapytaniu zawsze zwraca wartość. Jeśli nic nie pasuje, wartością będzie 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. Procedura składowana SQL — zmienna za krótka

  2. Jak przekonwertować tę instrukcję przygotowania, aby używała symboli zastępczych w Wordpress $wpdb?

  3. Dlaczego Eclipse proponuje Object jako domyślny typ mapowania dla typu danych Text?

  4. jak używać `charset` i `encoding` w `create_engine` SQLAlchemy (aby stworzyć pandas dataframe)?

  5. Format daty MySQL