我希望将结果按属性分组。
我尝试了这个,但它不起作用:
SELECT OWNER.NAME, DOG.DOGNAME
WHERE OWNER.ID = DOG.OWNER_ID
AND OWNER.NAME = (SELECT OWNER.NAME FROM OWNER);
但它给我一个错误:
- 00000 - "单行子查询返回多行"
醇>
非常感谢!
答案 0 :(得分:1)
我不是Oracle专家,但我相信您需要FROM
和JOIN
部分:-):
http://sqlfiddle.com/#!4/f8630/1
SELECT OWNER.ID, OWNER.NAME,
DOG.ID, DOG.DOGNAME
FROM OWNER
LEFT JOIN DOG
ON OWNER.ID = DOG.OWNER_ID;
答案 1 :(得分:1)
修改根据Alex的回复,该查询的修改版本为:
SELECT OWNER.NAME, DOG.DOGNAME
FROM OWNER
LEFT JOIN DOG ON OWNER.ID = DOG.OWNER_ID
ORDER BY OWNER.NAME
答案 2 :(得分:0)
首先,你错过了表子句:
如果你把它们放进去,如果你有多个拥有相同名字的所有者,那么你仍然会遇到问题,其中where子句中的子选择返回多行:
AND OWNER.NAME =(从OWNER中选择OWNER.NAME);
如果NAME不明显,则会引发错误。
您可以将其更改为:
AND OWNER.NAME IN(从OWNER中选择OWNER.NAME);
虽然在这种情况下整个子句没有意义,因为整个表将始终返回
最终答案:
SELECT OWNER.NAME, DOG.DOGNAME
FROM OWNER, DOG
WHERE OWNER.ID = DOG.OWNER_ID;