在MySQL中工作,Oracle中缺少右括号
对于一个类项目,我们使用MySQL和Oracle创建一个数据库,并编写查询来选择数据 此查询:在MySQL中工作,Oracle中缺少右括号,mysql,sql,oracle,Mysql,Sql,Oracle,对于一个类项目,我们使用MySQL和Oracle创建一个数据库,并编写查询来选择数据 此查询: SELECT E1.EmployeeID, E1.FirstName, E1.LastName FROM EMPLOYEE AS E1 WHERE EXISTS (SELECT E2.LastName FROM EMPLOYEE AS E2 WHERE E1.LastName = E2.LastName AND E
SELECT E1.EmployeeID, E1.FirstName, E1.LastName
FROM EMPLOYEE AS E1
WHERE EXISTS
(SELECT E2.LastName
FROM EMPLOYEE AS E2
WHERE E1.LastName = E2.LastName
AND E1.EmployeeID <> E2.EmployeeID);
在MySQL上运行良好,并返回两个结果,但在Oracle上,在E1表示缺少右括号后,我收到一条错误消息。是否确实需要在某个地方添加括号,或者是否存在其他问题?您需要删除AS以使其在Oracle上工作:
SELECT E1.EmployeeID, E1.FirstName, E1.LastName
FROM EMPLOYEE E1 -- here
WHERE EXISTS
(SELECT E2.LastName
FROM EMPLOYEE E2 -- here
WHERE E1.LastName = E2.LastName
AND E1.EmployeeID <> E2.EmployeeID);
谢谢你,这工作做得很好。Oracle和MySQL之间的另一个问题是这个查询的另一个版本。@karlb22-所以您知道答案:在Oracle中,您可以为列、表和子查询提供别名。为列指定别名时,可以使用关键字,因为它是可选的,但为了清晰起见,可能需要使用关键字。但是,对于表和子查询,不能将关键字用作。正如您所发现的,MySQL有不同的规则。这是一个典型的经验,当你与竞争产品的工作,应该做基本上相同的工作。@mathguy谢谢!我有另一个问题,但它可能是更好的格式作为一个单独的职位在这里,所以一旦我的90分钟的限制是我会张贴它。它与此查询类似,但从两个不同的表中提取重复的名称从客户C1中选择C1.LastName,其中E1.LastName=C1.LastName和E1.FirstName=C1.FirstName。它在MySQL中返回4个结果,但在Oracle中没有结果,尽管它们具有相同的结果data@karlb22:这可能来自您的数据,而不是来自您使用的其他SQL方言。如果您提出问题,请确保提供正确的样本数据、当前结果和期望的结果。@GMB将确保这样做。谢谢