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

Đếm số hàng đã nối trong phép nối bên trái

Làm thế nào về một cái gì đó như thế này:

SELECT m.MESSAGEID, sum((case when mp.messageid is not null then 1 else 0 end)) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Hàm COUNT () sẽ đếm mọi hàng, ngay cả khi nó có giá trị rỗng. Sử dụng SUM () và CASE, bạn chỉ có thể đếm các giá trị không rỗng.

CHỈNH SỬA:Một phiên bản đơn giản hơn được lấy từ bình luận trên cùng:

SELECT m.MESSAGEID, COUNT(mp.MESSAGEID) FROM MESSAGE m
LEFT JOIN MESSAGEPART mp ON mp.MESSAGEID = m.MESSAGEID
GROUP BY m.MESSAGEID;

Hy vọng điều đó sẽ hữu ích.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để bạn có được ngày tối đa có thể trong Oracle?

  2. Tạo bảng và chèn trong cùng một quy trình trong pl / sql

  3. ORA-16205 Nâng cấp lên 11.2.0.3

  4. Làm thế nào để lưu BLOB dưới dạng tệp trong PL / SQL?

  5. ORA-01219:cơ sở dữ liệu không mở:chỉ cho phép truy vấn trên các bảng / dạng xem cố định