【问题标题】:Unknown command error - SQL+/Oracle未知命令错误 - 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?

标签: mysql sql oracle sqlplus


【解决方案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'
                              );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-04
        • 2016-08-18
        • 1970-01-01
        • 1970-01-01
        • 2012-04-24
        • 2013-12-13
        相关资源
        最近更新 更多