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

Truy vấn MySQL - nhận các bản ghi bị thiếu khi sử dụng từng nhóm

SQL làm việc tốt với các tập giá trị dữ liệu trong cơ sở dữ liệu, nhưng không giỏi với các tập giá trị dữ liệu không trong cơ sở dữ liệu.

Cách giải quyết tốt nhất là giữ một bảng nhỏ cho các giá trị bạn cần vượt qua:

CREATE TABLE ScoreValues (score int);
INSERT INTO ScoreValues (score) 
  VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

Đưa ra nhận xét của bạn rằng bạn xác định điểm tối đa của một bài kiểm tra trong một bảng khác, bạn có thể tham gia vào bảng đó theo cách sau, miễn là ScoreValues chắc chắn có các giá trị ít nhất là cao hoặc cao hơn điểm tối đa của bài kiểm tra lớn nhất:

SELECT v.score, COUNT(tr.score) AS 'NumStudents'
FROM ScoreValues v 
  JOIN Tests t ON (v.score <= t.maxmarks)
  LEFT OUTER JOIN TestResults tr ON (v.score = tr.score AND t.testid = tr.testid)
WHERE t.testid = 'mytestid'
GROUP BY v.score;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng LIMIT trong GROUP BY để nhận N kết quả cho mỗi nhóm?

  2. Cách tiếp cận khác nhau của việc sử dụng mệnh đề IN trong MySql

  3. Làm cách nào để cắt bớt một bảng ràng buộc khóa ngoại?

  4. MySQL, nhiều hàng thành các trường riêng biệt

  5. Làm cách nào để xuất cơ sở dữ liệu SQL Server sang MySQL?