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

MySQL LEFT JOIN kết quả trùng lặp

Không, điều này là tốt. Đây chỉ là một trong những trường hợp hiếm hoi khi bạn muốn sử dụng DISTINCT từ khóa để loại bỏ các bản sao.

Trong trường hợp này, điều này được chứng minh bởi thực tế là logic của truy vấn là đúng, mặc dù nó trả về nhiều hơn một hàng. Nhiều khi người ta có thể thấy việc sử dụng DISTINCT khi thực sự logic của truy vấn là sai.

Ghi chú bên lề:

  • bất kỳ bộ lọc nào trên tham chiếu bảng mà bạn đang sử dụng trong WHERE mệnh đề khác với IS NULL/IS NOT NULL sẽ thực hiện bất kỳ LEFT JOIN nào trên cùng một tham chiếu bảng này, hãy chuyển sang một INNER JOIN , đối với hành vi của tập kết quả cuối cùng. (xem phần này: https://stackoverflow.com/a/15483895/1291428 )
  • bạn không nên sử dụng GROUP BY để mô phỏng tác dụng của DISTINCT , vì 2 lý do:

    1 / Đây không phải là mục đích. Một trong những hiệu ứng của GROUP BY là để loại bỏ các bản sao, nhưng mục đích chính của nó là nhóm các hàng theo một bộ tiêu chí nhất định, để áp dụng một số phép tính / phép toán phân tích trên chúng.

    2 / GROUP BY cũng ORDER BY kết quả (trong mysql), không nhất thiết phải như những gì bạn muốn và trong trường hợp đó làm chậm quá trình thực thi. Vui lòng chỉ cần đảm bảo sử dụng thích hợp những gì động cơ đang cung cấp, điều đó luôn tốt hơn theo quan điểm tương thích về sau. (dự đoán rằng những gì bạn đưa vào như đã được cấp thực tế không phải như vậy)

trân trọng.



  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 cách nào để chặn đầu ra tiêu đề cột cho một câu lệnh SQL?

  2. Có thể tạo hai khóa chính trong một bảng không?

  3. JPA chèn kết quả cha / con trong MySQLIntegrityConstraintViolationException

  4. Không thể lưu trữ tiếng Ả Rập trong cơ sở dữ liệu MYSQL bằng PHP

  5. Không thể tải LibreOffice:'com.mysql.jdbc.driver'