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

Làm thế nào để chọn từ hai bảng trong MySQL ngay cả khi không phải tất cả các hàng trong một bảng đều có câu trả lời chính trong bảng kia?

Để làm điều này, bạn cần một kết nối bên ngoài. Nhân tiện, cách bạn viết truy vấn của mình với một phép nối ngầm đã lỗi thời và không còn được khuyến nghị nữa. Nên sử dụng từ khóa JOIN. Điều này cũng giúp thay đổi liên kết bên trong thành liên kết ngoài dễ dàng hơn.

FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid=sc.id

Để trả về 0 thay vì NULL, hãy sử dụng IFNULL(..., 0) . Toàn bộ truy vấn trở thành:

SELECT
    sc.*,
    IFNULL(MIN(s.price), 0) AS minp,
    IFNULL(MAX(s.price), 0) AS maxp
FROM categories AS sc
LEFT JOIN products AS s
ON s.ownerid = sc.id
GROUP BY sc.id

Bạn cũng có thể muốn cân nhắc nếu trả về giá trị NULL mặc định thay vì 0 cho các danh mục không có sản phẩm sẽ tốt hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android studio getSlotFromBufferLocked:lỗi bộ đệm không xác định

  2. Xóa các hàng trùng lặp khỏi bảng

  3. Sử dụng SSH Tunneling như một giải pháp thay thế VPN

  4. Cách nhận dữ liệu bán hàng 3 tháng qua trong MySQL

  5. Xóa bộ đệm truy vấn MySQL mà không cần khởi động lại máy chủ