Mysql 未知命令错误-SQL+/Oracle
我正在查询一个类,在这个类中,我需要根据宠物主人是否拥有吉娃娃来选择他们的名字 我得用两张桌子,宠物主人和宠物。宠物主人有一个主人编号ownerNo,主人名称oLName,oFName,宠物有主人编号和宠物类型。以下是我尝试使用的代码:Mysql 未知命令错误-SQL+/Oracle,mysql,sql,oracle,sqlplus,Mysql,Sql,Oracle,Sqlplus,我正在查询一个类,在这个类中,我需要根据宠物主人是否拥有吉娃娃来选择他们的名字 我得用两张桌子,宠物主人和宠物。宠物主人有一个主人编号ownerNo,主人名称oLName,oFName,宠物有主人编号和宠物类型。以下是我尝试使用的代码: SELECT PetOwner.oFName, PetOwner.oLName FROM PetOwner, Pet WHERE PetOwner.ownerNo = (SELECT
SELECT
PetOwner.oFName,
PetOwner.oLName
FROM
PetOwner,
Pet
WHERE
PetOwner.ownerNo = (SELECT
Pet.ownerNumber
FROM
Pet
WHERE
Pet.petType = 'Chihuahua'
);
错误显示未知命令开始Pet.petTyp…-行的其余部分被忽略。我知道问题在WHERE子句中,但我似乎无法将其调整到它将起作用的地方,我相信答案是显而易见的
我只需要第二双眼睛就可以了
我如何才能做到这一点?在您的查询中:
SELECT PetOwner.oFName, PetOwner.oLName
FROM PetOwner, Pet
你在这里提到了“宠物”这张桌子。这里不应该提到表“Pet”,因为您是从表“PetOwner”而不是“Pet”中选择oFName和oLName
一个简单的连接查询将为您提供所需的内容。不需要以上述方式使用子查询。您需要根据PetOwner.ownerNo=Pet.ownerNumber,在Pet.petType为“Chihuahua”的条件下,将Pet表与PetOwner表连接起来
因此,完成的查询是:
SELECT po.oFname, po.oLName
FROM PetOwner as po
JOIN Pet as p
ON po.ownerNo = p.ownerNumber
WHERE p.petType = 'Chihuahua'
以下查询对我有效:
SELECT ownername
FROM PetOwner
WHERE PetOwner.ownerNo = (SELECT Pet.ownerNo FROM Pet WHERE Pet.petType = 'Chihuahua');
注意。您的查询让sql很困惑,要为哪只宠物选择父宠物还是子宠物。在子查询中为子表提供别名,如下所述:
SELECT
PetOwner.oFName,
PetOwner.oLName
FROM
PetOwner,
Pet
WHERE
PetOwner.ownerNo = (SELECT
p.ownerNumber
FROM
Pet p
WHERE
p.petType = 'Chihuahua'
);
什么样的未知错误,比如error no:spxxxxx,我认为在子查询中您没有编写top子句&使用=运算符检查结果。这有区别吗?为子查询表提供别名。详细信息请看我的答案。如果您使用的是SQL*Plus,这是Oracle的命令行客户端,为什么要将其标记为mysql。您真正使用的是哪种数据库管理系统?回顾:请解释一下错误所在。我可能理解,但这不是我们想要的,只是复制粘贴你的代码。这个想法是OP应该理解这个问题。
SELECT
PetOwner.oFName,
PetOwner.oLName
FROM
PetOwner,
Pet
WHERE
PetOwner.ownerNo = (SELECT
p.ownerNumber
FROM
Pet p
WHERE
p.petType = 'Chihuahua'
);