0

我正在尝试创建一个查询,该查询将搜索数据库中只有一种类型的值的字段。例如,每个人 ( regNum) 在任何时候最多可以有四种状态(' A'、' B'、' C' 或 ' D'),我想找到那些只有 ' C' 的状态。

SELECT DISTINCT tbl_studentModules.regNum FROM tbl_studentModules
        LEFT JOIN tbl_student
        ON tbl_student.regNum = tbl_studentModules.regNum
        WHERE status ? 'C' AND level = $level"

问号表示我想要一个类似于“仅”的语句的位置。

4

2 回答 2

0
SELECT sm.regNum
FROM tbl_studentModules sm
LEFT JOIN tbl_student s ON s.regNum = sm.regNum
AND level = $level
group by sm.regnum
HAVING sum(status <> 'C') = 0
于 2012-11-30T00:07:27.773 回答
0

我建议使用临时表执行此操作。抓取所有没有 C 的东西,例如:

DROP TABLE IF EXISTS t1;
CREATE TEMP TABLE t1 AS
SELECT DISTINCT tbl_studentModules.regNum 
    FROM tbl_studentModules
    LEFT JOIN tbl_student
    ON tbl_student.regNum = tbl_studentModules.regNum
    WHERE status NOT IN ('A','B','D') AND level = $level";

SELECT * FROM t1 WHERE status = 'C';
于 2012-11-30T00:36:28.693 回答