SELECT p.pnum, p.pname
FROM professor p, class c
WHERE p.pnum = c.pnum AND c.cnum = CS245 AND (SELECT COUNT(*) FROM (SELECT MAX(m.grade), MAX(m.grade) - MIN(m.grade) AS diff
FROM mark m WHERE m.cnum = c.cnum AND m.term = c.term AND m.section = c.section AND diff <= 20)) = 3
')附近的语法不正确。需要AS,FOR_PATH,ID或QUOTED_ID。
请考虑以下示例:
SELECT COUNT(1)
FROM SYSCAT.TABLES T
WHERE
(
-- SELECT COUNT(1)
-- FROM
-- (
SELECT COUNT(1)
FROM SYSCAT.COLUMNS C
WHERE C.TABSCHEMA=T.TABSCHEMA AND C.TABNAME=T.TABNAME
-- )
) > 50;
上面的查询按原样工作。但是问题是,如果您取消注释掉注释行,则会收到以下错误消息:"T.TABNAME" is an undefined name.
,至少在Db2 for Linux, Unix and Windows
中。您不能在外部将子选择列引用过于深入。
因此,您的查询不正确。在向任务描述提供数据样本和预期结果之前,很难对其进行纠正。