SELECT * FROM tabA WHERE NOT EXISTS ( SELECT * FROM tabB WHERE tabB.id = tabA.id )
当我执行这样的查询,postgresql抱怨“错误:Greenplum数据库还不支持该查询”.
编辑:这个怎么样?
SELECT * FROM tabA WHERE NOT EXISTS ( SELECT * FROM tabB WHERE tabB.id = tabA.id AND tabB.id2 = tabA.id2 )
编辑:
我在postgresql 8.2.15中测试了由@ypercube提供的4个答案.结论是:
1)第一个在这个版本的postgresql中不起作用,正如我在上面提到的那样.错误信息也可以在那里找到.
2)对于其他三个答案,执行速度为:(3)LEFT JOIN> (4)EXCEPT>>> (2)NOT IN.具体来说,对于具有相同语法的查询,(3)LEFT JOIN需要大约5580ms,(4)EXCEPT大约需要13502ms,(2)NOT IN需要超过100000(实际上我没有等待util完成).
NOT IN子句有什么特别的原因太慢吗?
程