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

Tham gia hai bảng mysql, mối quan hệ một đến nhiều

Bạn cần sử dụng GROUP BY để giải thích các nhóm cần đếm dựa trên. Không có GROUP BY bạn chỉ nhận được một nhóm duy nhất của toàn bộ tập hợp kết quả, như bạn đã thấy.

Trong SQL chuẩn, cần phải đưa vào GROUP BY mệnh đề mọi biểu thức không tổng hợp được bao gồm trong SELECT , nhưng MySQL cho phép bạn không làm điều này, cho phép một biểu thức như sau. (Ít nhất, khi không ở chế độ nghiêm ngặt; tôi không chắc liệu chế độ nghiêm ngặt có tăng cường yêu cầu này để phù hợp với SQL chuẩn hay không)

SELECT `items`.*, COUNT(1) AS points
FROM `items` INNER JOIN `points` ON `items`.`id` = `points`.`item_id`
WHERE ...
GROUP BY `items`.`id`

Giả sử rằng items.id là khóa chính của bảng này và vì vậy nó sẽ không xuất hiện trong nhiều hàng items , điều này sẽ có hiệu quả mong muốn.

Sau khi bạn giới thiệu GROUP BY điều quan trọng là phải hiểu sự khác biệt giữa WHEREHAVING điều khoản. Trước đây áp dụng điều kiện trước đó nhóm và tổng hợp được áp dụng, trong khi cái sau áp dụng sau đó . Điều này có nghĩa là bạn phải sử dụng HAVING nếu bạn muốn thực hiện một điều kiện dựa trên số lượng đó; WHERE mệnh đề trong ví dụ ban đầu của bạn sẽ áp dụng trước tổng hợp, vì vậy kết quả sẽ là số điểm được tạo sau ngày nhất định.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chạy dự án django mà không cần cài đặt django

  2. Làm thế nào để đồng bộ hóa hai bảng của các cơ sở dữ liệu MySQL khác nhau trên cùng một máy?

  3. làm thế nào để cài đặt mysqli trên máy chủ windows iis?

  4. MaxListariesExceededWarning:Đã phát hiện rò rỉ bộ nhớ EventEmitter có thể xảy ra. 11 câu trả lời lis đã được thêm vào. Sử dụng emitter.setMaxListaries () để tăng giới hạn

  5. INNODB có được bật theo mặc định trong MySQL không?