MySQL COUNT问题

时间:2010-08-06 19:40:46

标签: mysql

我正在尝试计算所有评分论文,但如果一篇文章由于某种原因被评分两次或更多,那么代码会计算相同的文章,因为它已被评分多次,我可以确保论文只计算一次?

提前感谢您的帮助!

这是代码。

SELECT COUNT(students_essays.id) 
FROM students_essays 
INNER JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id 

这是我的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)
);

感谢所有人的帮助我找出了问题这甚至不是这个查询doh!

3 个答案:

答案 0 :(得分:2)

SELECT COUNT(DISTINCT students_essays.id)

答案 1 :(得分:0)

使用INNER JOIN的LEFT JOIN

编辑:意思,选择随笔,所以你只有1,而LEFT JOIN就是标记

答案 2 :(得分:0)

将DISTINCT添加到您的查询中。或者,如果您只需要id,请不要使用students_essays表,因为id在essays_grades中:

select count(distinct students_essays_id) from essays_grades