MySQL计数问题
有没有办法让我数一数要展示多少未评分的论文?如果是这样,我还需要从MySQL代码中添加或删除什么 提前谢谢你的帮助 这是我的MySQL代码MySQL计数问题,mysql,Mysql,有没有办法让我数一数要展示多少未评分的论文?如果是这样,我还需要从MySQL代码中添加或删除什么 提前谢谢你的帮助 这是我的MySQL代码 SELECT students.*, students_essays.* FROM students INNER JOIN students_essays ON students.student_id = students_essays.student_id LEFT JOIN essays_grades ON students_essays.id
SELECT students.*, students_essays.*
FROM students
INNER JOIN students_essays ON students.student_id = students_essays.student_id
LEFT JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id
WHERE essays_grades.grade_id IS NULL
ORDER BY students_essays.id DESC;
这是我的MySQL表
CREATE TABLE students_essays (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
student_id INT UNSIGNED NOT NULL,
content TEXT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE students (
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
student_first_name VARCHAR(255) DEFAULT NULL,
student_last_name VARCHAR(255) DEFAULT NULL,
pass CHAR(40) NOT NULL,
PRIMARY KEY (student_id)
);
CREATE TABLE essays_grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
grade_id INT UNSIGNED NOT NULL,
students_essays_id INT UNSIGNED NOT NULL,
student_id INT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
letter_grade VARCHAR(2) DEFAULT NULL,
grade_points FLOAT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);
就我所知,你只需要看两张表就可以了
SELECT COUNT(*)
FROM students_essays se
WHERE NOT EXISTS(SELECT * FROM
essays_grades ge
WHERE se.id = eg.students_essays_id)
每个学生数还是总数?我只想数一下数据库中总共有多少篇未评分的论文。只是对你的表结构做一个评论。一篇文章有可能有一个以上的分数吗?如果没有,就没有理由让
论文(分数
表)。。。您可以直接将成绩id
存储在学生论文
表中。这将使您的查询更容易进行。IIRC,COUNT(*)
中的星号是您需要注意的地方:COUNT(grade\u id)
不会计算NULL
行,而COUNT(*)
会计算行。+1表示正确答案,但如果只需要计数,则删除订单(浪费操作)
SELECT COUNT(*)
FROM students_essays se
WHERE NOT EXISTS(SELECT * FROM
essays_grades ge
WHERE se.id = eg.students_essays_id)