子查询
可以在定量谓词、EXISTS 谓词或 IN 谓词中使用子查询。子查询应该在 SELECT 子句中仅指定单个元素。
当子查询中出现路径表达式时,必须在子查询、某个包含子查询或外部查询中定义路径表达式的标识变量。标量子查询是返回一个值的子查询。可以在基本谓词和动态查询的 SELECT 子句中使用标量子查询。
示例:子查询
SELECT OBJECT(e) FROM EmpBean e WHERE e.salary > ( SELECT AVG(e1.salary) FROM EmpBean e1)
以上查询返回收入多于所有职员平均月薪的职员。
SELECT OBJECT(e) FROM EmpBean e WHERE e.salary > ( SELECT AVG(e1.salary) FROM IN (e.dept.emps) e1 )
以上查询返回收入多于部门平均月薪的职员。
SELECT OBJECT(e) FROM EmpBean e WHERE e.salary = ( SELECT MAX(e1.salary) FROM IN (e.dept.emps) e1 )
以上查询返回部门中收入最多的职员。
SELECT OBJECT(e) FROM EmpBean e WHERE e.salary > ( SELECT AVG(e.salary) FROM EmpBean e1 WHERE YEAR(e1.hireDate) = YEAR(e.hireDate) )
以上查询返回收入多于同一年中所雇用的职员的平均月薪的职员。