SELECT *
FROM (SELECT ROWNUM rnum,
query.*
FROM (WITH myQuery AS(
SELECT column_b
FROM table_a a
WHERE a.column_a = 1234)
SELECT b.column_e AS some_column
FROM table_b b,
table_c c,
table_a a
LEFT JOIN table_d d ON c.column_c = d.column_d
JOIN myQuery mq ON a.column_b = mq.column_b
WHERE b.column_b = a.column_b) query)
WHERE rnum > 0
问问题
188 次
1 回答
2
不要混合使用 ANSI-88 和 ANSI-92 JOIN 语法,选择其中之一。这是您使用 ANSI-92 语法的查询:
WITH myQuery AS (
SELECT column_b
FROM table_a a
WHERE a.column_a = 1234)
SELECT x.*
FROM (SELECT b.column_e AS some_column,
ROWNUM 'rnum'
FROM table_b b
JOIN TABLE_A a ON a.column_b = b.column_b
JOIN myQuery mq ON mq.column_b = a.column_b
JOIN table_c c ON c.? = ?? --need join criteria here
LEFT JOIN table_d d ON c.column_c = d.column_d) x
WHERE x.rnum > 0
您的示例缺少 TABLE_C 加入的内容 - 因此?
and??
我不知道WITH
可以在子查询中定义子句——我确信过去在 10g 中尝试它时遇到过错误。
于 2009-12-22T01:28:23.070 回答