使用逗号分隔 table 列表而不是 JOIN 关键字时将 Oracle(交叉连接?)转换为 Netezza
Convert Oracle (Cross Join?) to Netezza when using comma separated table list instead of JOIN keywords
下面是一些 Oracle PL/SQL 代码,用于在不使用实际 JOIN 关键字的情况下连接表。这看起来像交叉连接?我将如何转换为 Netezza SQL 代码?那就是我被困的地方。
SELECT COUNT(*)
FROM TABLE_A A, TABLE_A B
WHERE A.X = 'Y' AND A.PATH LIKE '/A/A/A'
AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';
Oracle 交叉连接:
http://www.sqlguides.com/sql_cross_join.php
这是我到目前为止尝试过的:
SELECT *
from TABLE_A A
cross join (
select * from TABLE_A
) B
WHERE
A.X = 'Y' AND A.PATH LIKE '/A/A/A'
AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';
编辑:
a_horse_with_no_name:
当我一开始在 Netezza 中对 COUNT(*) 使用任一语法时,它都有效,并且 returns 计数为 60,这与上面的第一个查询匹配,当 运行 在 Oracle 中.在 Netezza 中没有 WHERE 子句 returns 125316 结果,这与 Oracle 中 运行 时上面的第一个查询匹配。当我一开始在 Netezza 中对 SELECT * 使用任一语法时,我收到错误
ERROR [HY000] ERROR: Record size 70418 exceeds internal limit of 65535 bytes'
进行 CROSS JOIN 时必须在 Netezza 中使用显式列。使用 SELECT * 会抛出我的问题编辑中指出的错误。还必须通过不转义任何内容来转义“%”字符。谢谢a_horse_with_no_name。干杯! "Where everybody knows your name.";-)
select A.CODE, B.CODE, LOWER(A.DIM), LOWER(B.DIM)
FROM TABLE_A A
cross join TABLE_A B
WHERE A.PATH LIKE '\A\A\A%' ESCAPE '' AND A.X = 'Y'
AND B.PATH LIKE '\B\B\B%' ESCAPE '' AND B.X = 'Y'
下面是一些 Oracle PL/SQL 代码,用于在不使用实际 JOIN 关键字的情况下连接表。这看起来像交叉连接?我将如何转换为 Netezza SQL 代码?那就是我被困的地方。
SELECT COUNT(*)
FROM TABLE_A A, TABLE_A B
WHERE A.X = 'Y' AND A.PATH LIKE '/A/A/A'
AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';
Oracle 交叉连接:
http://www.sqlguides.com/sql_cross_join.php
这是我到目前为止尝试过的:
SELECT *
from TABLE_A A
cross join (
select * from TABLE_A
) B
WHERE
A.X = 'Y' AND A.PATH LIKE '/A/A/A'
AND B.X = 'Z' AND B.PATH LIKE '/B/B/B';
编辑:
a_horse_with_no_name:
当我一开始在 Netezza 中对 COUNT(*) 使用任一语法时,它都有效,并且 returns 计数为 60,这与上面的第一个查询匹配,当 运行 在 Oracle 中.在 Netezza 中没有 WHERE 子句 returns 125316 结果,这与 Oracle 中 运行 时上面的第一个查询匹配。当我一开始在 Netezza 中对 SELECT * 使用任一语法时,我收到错误
ERROR [HY000] ERROR: Record size 70418 exceeds internal limit of 65535 bytes'
进行 CROSS JOIN 时必须在 Netezza 中使用显式列。使用 SELECT * 会抛出我的问题编辑中指出的错误。还必须通过不转义任何内容来转义“%”字符。谢谢a_horse_with_no_name。干杯! "Where everybody knows your name.";-)
select A.CODE, B.CODE, LOWER(A.DIM), LOWER(B.DIM)
FROM TABLE_A A
cross join TABLE_A B
WHERE A.PATH LIKE '\A\A\A%' ESCAPE '' AND A.X = 'Y'
AND B.PATH LIKE '\B\B\B%' ESCAPE '' AND B.X = 'Y'