可以在PostgreSQL中加入CTE吗?
我正试图写一个这样的查询可以在PostgreSQL中加入CTE吗?,sql,postgresql,join,common-table-expression,Sql,Postgresql,Join,Common Table Expression,我正试图写一个这样的查询 WITH a AS (SELECT key FROM table) SELECT * FROM a JOIN b; 这会在PostgreSQL 10.4中生成语法错误 为什么会出现这种错误 看起来我将创建一个视图。有更好的解决方案吗?您缺少连接条件: WITH a AS (SELECT key FROM table) SELECT * FROM a JOIN b ON a.key = b.key; 问题不在于CTE,而是一个简单的语法错误: SEL
WITH a AS (SELECT key FROM table)
SELECT *
FROM a
JOIN b;
这会在PostgreSQL 10.4中生成语法错误
为什么会出现这种错误
看起来我将创建一个视图。有更好的解决方案吗?您缺少连接条件:
WITH a AS (SELECT key FROM table)
SELECT *
FROM a
JOIN b ON a.key = b.key;
问题不在于CTE,而是一个简单的语法错误:
SELECT *
FROM a
JOIN b
-- something missing here
这里,连接默认为内部连接,这需要一些条件来连接哪些行-通常类似于a.key=b.key或使用key。左外连接或右外连接也是如此
如果希望所有可能的组合都很少见,但偶尔有用,可以使用交叉连接:
或类似的逗号运算符:
SELECT *
FROM a, b;
您缺少或正在使用的强制联接条件。这很有效,谢谢。
SELECT *
FROM a, b;