首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Oracle替代存在(除

Oracle替代存在(除
EN

Database Administration用户
提问于 2013-04-05 17:53:58
回答 1查看 1.9K关注 0票数 1

我想知道甲骨文是否有一个同样优雅的解决方案,可以在这里发布并回答:

比较可以包含NULLS的列--有更优雅的方法吗?

我无法让这个解决方案(被接受的解决方案)在Oracle环境中工作。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2015-06-01 21:38:18

这应该是相当于已接受的答案的Oracle:

代码语言:javascript
运行
复制
SELECT *
FROM a a1 
  JOIN b b1 
    ON a1.id = b1.id 
   AND EXISTS(SELECT * FROM a a2 where a2.id = a1.id
              MINUS 
              SELECT * FROM b b2 where b2.id = b1.id);

我以前从未见过select a.* (即没有使用别名而不是常量值的FROM子句的select ),但我假设它映射到与之相关的子查询。

请注意,onedaywhen的答案在甲骨文中同样有效(当用except替换minus时):

代码语言:javascript
运行
复制
WITH a_minus_b AS (
  SELECT * 
  FROM A
  minus 
  SELECT *
  FROM B
)
SELECT * 
FROM a_minus_b T 
   JOIN B ON T.ID = B.ID;

SQLFiddle:http://sqlfiddle.com/#!4/3f369/1

为了完整起见:在标准SQL中,这可以写成:

代码语言:javascript
运行
复制
SELECT *
FROM a 
  JOIN b 
    ON a.id = b.id 
where (a.string, a.dt, a.b, a.num) is distinct from (b.string, b.dt, b.b, b.num);

它是由Postgres支持的:http://sqlfiddle.com/#!15/b431b/1

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/39352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档