在Postgresql中的NOT EXISTS子句
任何人都知道如何在Postgresql中执行这样的查询?
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 ) 编辑:
有3种(主要)方式来做这种查询:
> NOT EXISTS相关子查询 你发现第一种方式在Greenplum工作. @Marco和@juergen提供了第二种方式.这是第三个,它可能会绕过Greenplum的局限性: SELECT tabA.* FROM tabA LEFT JOIN tabB ON tabB.id = tabA.id AND tabB.id2 = tabA.id2 WHERE tabB.id IS NULL ; 这(第四种方式)也适用于Postgres(支持EXCEPT运算符): SELECT a.* FROM a WHERE id IN ( SELECT id FROM a EXCEPT SELECT id FROM b ) ; 测试在SQL-Fiddle(所有4工作在Postgres). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |