我有一个包含student_id
,course_id
和result
的表格。表结构如下
我需要获得结果为0的course_id
,另一个条件是该课程的结果可能不是1。
在该图片中,course_id
633同时包含result
0和1.因此特定course_id
不会从该表中获取。
此致 约翰
答案 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
<强>解释强>
查询将返回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))