PostgreSQL OUTER 连接逻辑
PostgreSQL OUTER join logic
我有一个很旧的 informix 过程,我想在我的新 PostgreSQL 数据库中使用它。
我是 Postgres 的新手,我觉得连接很不一样。
这是我的旧 Informix 代码的一部分:
CREATE PROCEDURE mw_getsvid(bid INT)
RETURNING INT;
DEFINE aid INT;
SELECT a.id INTO aid
FROM cerberus c, delphi d,
OUTER (emilia e, fragile f)
WHERE c.id = [...]
RETURN aid;
END PROCEDURE;
所以我想做的是 c outer 与 e 或 f 连接。 or d outer joins with e or f.
如果有人能将他的想法或类似的例子发给我,我将非常高兴。
您必须对 PostgreSQL 使用 SQL 标准连接语法SQL:
FROM cerberus c
JOIN delphi d ON d.col1 = c.col2
LEFT JOIN emilia e ON e.col3 = c.col4
LEFT JOIN fragile f ON f.col5 = c.col6 AND f.col7 = d.col8
联接是左关联的,但您可以使用括号来覆盖它。
当然你写doen join的顺序不一定是执行的顺序。
有关详细信息,请参阅 the documentation。
This answer 也有有趣的信息。
我有一个很旧的 informix 过程,我想在我的新 PostgreSQL 数据库中使用它。 我是 Postgres 的新手,我觉得连接很不一样。
这是我的旧 Informix 代码的一部分:
CREATE PROCEDURE mw_getsvid(bid INT)
RETURNING INT;
DEFINE aid INT;
SELECT a.id INTO aid
FROM cerberus c, delphi d,
OUTER (emilia e, fragile f)
WHERE c.id = [...]
RETURN aid;
END PROCEDURE;
所以我想做的是 c outer 与 e 或 f 连接。 or d outer joins with e or f.
如果有人能将他的想法或类似的例子发给我,我将非常高兴。
您必须对 PostgreSQL 使用 SQL 标准连接语法SQL:
FROM cerberus c
JOIN delphi d ON d.col1 = c.col2
LEFT JOIN emilia e ON e.col3 = c.col4
LEFT JOIN fragile f ON f.col5 = c.col6 AND f.col7 = d.col8
联接是左关联的,但您可以使用括号来覆盖它。 当然你写doen join的顺序不一定是执行的顺序。
有关详细信息,请参阅 the documentation。 This answer 也有有趣的信息。