【发布时间】:2016-07-18 14:58:24
【问题描述】:
我正在尝试对 Oracle 数据库执行查询。
我的表结构是:
- d--o 一对一
- o--r 一对多
- o--m 多对多(通过 mtm)
我正在使用以下查询:
SELECT o.id ID, ROWNUM rn /*row 1*/
FROM TABLE_D d
LEFT JOIN TABLE_O o ON d.O_ID=o.ID
RIGHT JOIN TABLE_R r ON r.O_ID = o.ID AND r.TYPE = 'SOME_TYPE' /*row 4*/
RIGHT JOIN TABLE_MTM mtm ON o.ID = mtm.ORD_ID /*row 5-6*/
RIGHT JOIN TABLE_M m ON mtm.M_ID = m.ID AND m.TYPE = 'SOMETHING_ELSE' /*row 5-6*/
WHERE o.ACTIVE=0
ORDER BY o.SOME_COL ASC;
(这只是我完整查询的一小部分;是的,我确实需要 ROWNUM、“d”表以及所有内容)
- 如果我运行此查询,它不会返回任何结果。
- 如果我从 SELECT 中删除 ROWNUM,它会返回结果
- 如果我删除第 4 行,它会返回结果
- 如果我删除第 5 行和第 6 行,它会返回结果。
谁能告诉我我错过了什么?
更新: 在 Oracle 12c 上一切正常。 在 10g 上无法正常工作。
【问题讨论】:
-
您是否尝试过在第 1 行将表别名“d”作为 ROWNUM 的前缀?
-
ROWNUM 不是表的列。
标签: sql oracle join rownum right-join