如果清除状态等于1,则MYSQL选择student_id

时间:2014-03-22 09:24:53

标签: php mysql

表名:batch_1_student_marks

我在batch_1_student_marks表中有学生标记列表。

其中"清除"表示学生通过/未通过状态。
 已清除= 1(通过)
 已清除= 0(失败)

在下表中,student_id 2仅清除了所有行中的状态1。我不想选择student_id 1和3,因为它已在相应的行中清除了状态0。

如果我使用以下查询,它将给出结果,
从batch_1_student_marks中选择student_id WHERE student_id = 2并清除= 1。 但是这个查询不适合student_id 1和3.因为我不想选择student_id,如果它在单行中已经清0,那么......... 请帮我查询......

| ID | |学期| | student_id数据| | subject_id | |等级| |标记| |清除|
1 ----- 1 -------------- 1 ------------- 1 ----------- a-- ------- -------- 8 0
1 ----- 1 -------------- 1 ------------- 2 ----------- b-- ------- 9 -------- 1
1 ----- 1 -------------- 1 ------------- 3 ----------- d-- ------- 2 -------- 0
1 ----- 1 -------------- 1 ------------- 8 ----------- e-- ------- 4 -------- 1
1 ----- 1 -------------- 1 ------------- 2 ----------- b-- ------- 9 -------- 1
1 ----- 1 -------------- 1 ------------- 3 ----------- d-- ------- 2 -------- 1
1 ----- 1 -------------- 1 ------------- 8 ----------- e-- ------- 4 -------- 1
1 ----- 1 -------------- 1 ------------- 2 ----------- b-- ------- 9 -------- 0

1 ----- 1 -------------- 2 ------------- 3 ----------- d --------- 2 -------- 1
1 ----- 1 -------------- 2 ------------- 8 ----------- e-- ------- 4 -------- 1
1 ----- 1 -------------- 2 ------------- 3 ----------- d-- ------- 2 -------- 1
1 ----- 1 -------------- 2 ------------- 8 ----------- e-- ------- 4 -------- 1
1 ----- 1 -------------- 2 ------------- 3 ----------- d-- ------- 2 -------- 1
1 ----- 1 -------------- 2 ------------- 8 ----------- e-- ------- 4 -------- 1

1 ----- 1 -------------- 3 ------------- 3 ----------- d --------- 2 -------- 1
1 ----- 1 -------------- 3 ------------- 8 ----------- e-- ------- 4 -------- 0
1 ----- 1 -------------- 3 ------------- 3 ----------- d-- ------- 2 -------- 1
1 ----- 1 -------------- 3 ------------- 8 ----------- e-- ------- 4 -------- 0
1 ----- 1 -------------- 3 ------------- 3 ----------- d-- ------- 2 -------- 1
1 ----- 1 -------------- 3 ------------- 8 ----------- e-- ------- 4 -------- 0

3 个答案:

答案 0 :(得分:1)

您可以使用以下

如果清除的字段类型为' text'然后: - -

SELECT student_id FROM batch_1_student_marks WHERE cleared='1';


如果清除的字段类型为' number'然后: - -

SELECT student_id FROM batch_1_student_marks WHERE cleared=1;

我希望它会对你有所帮助。

答案 1 :(得分:0)

只需使用以下查询:

SELECT student_id FROM batch_1_student_marks WHERE cleared='1';

答案 2 :(得分:0)

SELECT student_id,cleared from batch_1_student_marks
GROUP BY student_id
HAVING  COUNT(DISTINCT cleared)=1
AND cleared=1

FIDDLE

你应该从一开始就添加了细节。一个明确的问题几乎可以解决问题。