【发布时间】:2021-08-20 13:37:54
【问题描述】:
我有一个简单的查询:
with MaxSal AS (SELECT MAX(Salary), DepartmentId FROM Employee GROUP BY DepartmentId)
SELECT Department.Name AS "Department", Employee.Name AS "Employee", Employee.Salary AS "Salary" FROM Employee
JOIN Department ON Department.Id = Employee.DepartmentId
WHERE (Employee.Salary, Employee.DepartmentId) in MaxSal;
它应该创建一个MaxSal 临时表,然后在WHERE 部分它应该检查Salary, DepId 是否在所述表内。不幸的是,这个查询给了我
ORA-00920: invalid relational operator 我猜是指 in 运算符。如果我直接放置子查询而不是先将其放入临时表中,一切都会按预期工作。
有人能告诉我为什么它不适用于WITH 子句吗?
【问题讨论】:
-
where (col1, col2) in tablename从来都不是有效的 SQL,所以我不确定您为什么希望它在 CTE 的特殊情况下工作。select * from dual where ('X','Y') in dual适合你吗?
标签: sql oracle subquery common-table-expression