Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để sử dụng COALESCE () trong mệnh đề WHERE một cách tối ưu?

Bạn có thể thực hiện phép tính với hai truy vấn con riêng biệt:

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

Các chỉ mục có thể được sử dụng cho mỗi truy vấn con, vì vậy nhìn chung nó sẽ nhanh hơn. Nhân tiện, bạn không phải lo lắng về NULL giá trị, bởi vì COUNT(*) trong một truy vấn con tương quan luôn trả về một giá trị. Nếu không có gì phù hợp, giá trị sẽ là 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. TẢI THÔNG TIN DỮ LIỆU chỉ 1 bản ghi được chèn

  2. MySQL Loại bỏ dấu ngắt dòng ở cuối khỏi một cột

  3. Cách quản lý các phiên trong Node.js bằng Passport, Redis và MySQL

  4. Sự nhầm lẫn mệnh đề WHERE với PDO

  5. Chọn phần trăm hàng từ bảng SQL?