未知命令错误 - SQL+/Oracle

Posted

技术标签:

【中文标题】未知命令错误 - SQL+/Oracle【英文标题】:Unknown command error - SQL+/Oracle 【发布时间】:2014-04-02 06:34:26 【问题描述】:

我正在查询一个班级,我需要根据宠物主人是否拥有吉娃娃来选择宠物主人的姓名。

我必须使用两个表,PetOwner 和 Pet。 PetOwner 有一个所有者编号(ownerNo),所有者名称(oLName,oFName),而 Pet 有一个所有者编号和 petType。这是我尝试使用的代码:

SELECT 
    PetOwner.oFName, 
    PetOwner.oLName
FROM 
    PetOwner, 
    Pet
WHERE 
    PetOwner.ownerNo = (SELECT 
                            Pet.ownerNumber 
                        FROM 
                            Pet 
                        WHERE 
                            Pet.petType = 'Chihuahua'
                        );

错误提示“以“Pet.petTyp...”开头的未知命令 - 忽略行的其余部分。”我知道问题出在 WHERE 子句中,但我似乎无法将其调整到可以工作的位置,我相信答案是显而易见的。

我只需要第二双眼睛来看看它。

我该怎么做?

【问题讨论】:

什么样的未知错误,例如错误号:spxxxxx 我认为在子查询中您没有编写顶部子句并使用 = 运算符检查该结果。有区别吗? 为您的子查询表提供别名。查看我的答案以获取详细信息。 如果您使用的是 SQL*Plus(它是 Oracle 的命令行客户端),为什么要使用 mysql 标记它。您真正使用的是哪个 DBMS? 【参考方案1】:

在您的查询中:

SELECT PetOwner.oFName, PetOwner.oLName
FROM PetOwner, Pet

您在这里提到了“宠物”表。此处不应提及表“Pet”,因为您从表“PetOwner”中选择 oFName 和 oLName,而不是“Pet”。

一个简单的连接查询将给你你想要的。不需要以上述方式使用子查询。在 Pet.petType 为 'Chihuahua' 的条件下,根据 PetOwner.ownerNo = Pet.ownerNumber 将 Pet 表与 PetOwner 表连接起来。

所以完成的查询是:

SELECT po.oFname, po.oLName
FROM PetOwner as po
JOIN Pet as p
ON po.ownerNo = p.ownerNumber
WHERE p.petType = 'Chihuahua'    

【讨论】:

【参考方案2】:

以下查询对我有用:

SELECT ownername
FROM PetOwner
WHERE PetOwner.ownerNo = (SELECT Pet.ownerNo FROM Pet WHERE Pet.petType = 'Chihuahua');

问候。

【讨论】:

【参考方案3】:
 SELECT oFName, oLName
 FROM PetOwner
 WHERE ownerNo = (SELECT ownerNumber FROM Pet WHERE petType = 'Chihuahua');

【讨论】:

评论:一些错误的解释将不胜感激。我可能理解,但我们不希望 OP 只是复制并粘贴您的代码。这个想法是 OP 应该理解这个问题。【参考方案4】:

您的查询混淆了 sql 为哪个 Pet 选择父级或子级。在您的子查询中为子表提供别名,如下所述:

SELECT 
    PetOwner.oFName, 
    PetOwner.oLName
FROM 
    PetOwner, 
    Pet
WHERE 
    PetOwner.ownerNo = (SELECT 
                            p.ownerNumber 
                        FROM 
                            Pet p
                        WHERE 
                            p.petType = 'Chihuahua'
                        );

【讨论】:

以上是关于未知命令错误 - SQL+/Oracle的主要内容,如果未能解决你的问题,请参考以下文章

ORACLE:错误错误(6,3):PL/SQL:SQL 语句被忽略和错误(8,3):PL/SQL:ORA-00933:SQL 命令未在过程中正确结束

powershell/sqlplus 错误 SP2-0042:未知命令“■@” - 忽略行的其余部分

Oracle数据导入导出imp/exp :未知的命令开头。。。忽略了剩余的行

为啥使用Mysql命令source导入.sql文件时总是出错?

修改Oracle权限的SQL及常见错误

oracle如何检查sql语法错误