未知命令错误 - 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 :未知的命令开头。。。忽略了剩余的行