sql >> Database >  >> RDS >> Mysql

Hoe kan ik COALESCE() optimaal gebruiken in de WHERE-clausule?

U kunt de berekening uitvoeren met twee afzonderlijke subquery's:

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

Indexen kunnen voor elke subquery worden gebruikt, dus het zou in het algemeen sneller moeten zijn. U hoeft zich trouwens geen zorgen te maken over NULL waarden, omdat COUNT(*) in een gecorreleerde subquery retourneert altijd een waarde. Als er niets overeenkomt, is de waarde 0 .




  1. Hoe CONCAT_WS() werkt in PostgreSQL

  2. Hoe records selecteren met duplicaat van slechts één veld en alle andere veldwaarden?

  3. Bulksgewijs gedeeltelijk geciteerd CSV-bestand in SQL Server invoegen

  4. hoe vervang de geaccentueerde letter in een varchar2-kolom in orakel