Mysql如何从一个表中得到一个字段没有特定值的所有行..?

时间:2014-09-25 06:32:33

标签: php mysql where

我有一个包含student_idcourse_idresult的表格。表结构如下

enter image description here

我需要获得结果为0的course_id,另一个条件是该课程的结果可能不是1。

在该图片中,course_id 633同时包含result 0和1.因此特定course_id不会从该表中获取。

此致 约翰

5 个答案:

答案 0 :(得分:1)

我希望这就是你要找的东西:

SELECT student_id,course_id,SUM(CASE WHEN result=1 THEN 1 ELSE 0 END) as 0Count
FROM TableName
GROUP BY student_id,course_id
HAVING 0Count=0

SQL Fiddle

<强>解释

查询将返回result=0的学生,并且该课程没有result=1

示例输出:

student_id   course_id   result
3061         663         0
3061         663         1
3062         664         1
3063         665         0

结果将是:

STUDENT_ID   COURSE_ID       0COUNT
-----------------------------------
3063         664             0

答案 1 :(得分:0)

    SELECT course_id FROM table_name WHERE result <> 1

编辑:踢的未使用的选择

答案 2 :(得分:0)

啊,我明白了。我想你正在寻找这个代码

SELECT course_id FROM table_name WHERE result = 0 AND result NOT LIKE "%1%";

让我知道它对你有什么用。

答案 3 :(得分:0)

尝试此查询:

SELECT DISTINCT t1.course_id
 FROM table_name t1
 WHERE t1.result = 0
   AND NOT EXISTS (
     SELECT 1
     FROM table_name t2
     WHERE t2.course_id = t1.course_id
     AND t2.result = 1);

答案 4 :(得分:0)

试试这个

SELECT *
FROM TABLE_NAME
WHERE course_id NOT IN
    (SELECT course_id
     FROM TABLE_NAME
     WHERE RESULT=0
       AND course_id IN
         (SELECT course_id
          FROM TABLE_NAME
          WHERE RESULT=1))