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;