您的查询实际上根本不需要 JOIN。
SELECT A.*
FROM tblA A
WHERE NOT EXISTS (SELECT 1 FROM tblB B WHERE A.f1 = B.f1);
我快速浏览了 Polyhedra SQL 参考手册(可在此处获得),并且看不到任何看起来与 SQL-Server 和 Oracle 分别使用的*=
或等效的东西(+)
,我认为您可能不得不求助于某些东西对于需要列的 LEFT JOIN 就像这样(据我所知,Polyhedra 支持 UNION):
SELECT A.f1 AS A, b.f1 AS B
FROM tblA A, tblB B
WHERE A.f1 = B.f1
UNION ALL
SELECT A.f1 AS A, NULL AS B
FROM tblA A
WHERE NOT EXISTS (SELECT 1 FROM tblB B WHERE A.f1 = B.f1);
SQL Fiddle 示例(不在多面体中)
附录
因为NOT EXISTS
不允许,但是NOT IN
,
SELECT A.f1 AS A, b.f1 AS B
FROM tblA A, tblB B
WHERE A.f1 = B.f1
UNION ALL
SELECT A.f1 AS A, NULL AS B
FROM tblA A
WHERE A.F1 NOT IN (SELECT b.F1 FROM tblB B WHERE B.f1 IS NOT NULL);
那里有许多免费的 DBMS,如果可能的话,我强烈建议您查看其他供应商。