在where子句中使用此子查询的语法问题是什么

问题描述 投票:0回答:1
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。

sql db2
1个回答
0
投票

请考虑以下示例:

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中。您不能在外部将子选择列引用过于深入。

因此,您的查询不正确。在向任务描述提供数据样本和预期结果之前,很难对其进行纠正。

© www.soinside.com 2019 - 2024. All rights reserved.