ITPub博客

首页 > 数据库 > Oracle > 标量子查询(一)

标量子查询(一)

原创 Oracle 作者:luisedalian 时间:2014-01-16 09:34:04 0 删除 编辑
标量子查询只和外连接语句等价

点击(此处)折叠或打开

  1. --下面的语句是否等价?
  2. SELECT t1.ID, t2.ID FROM t1, t2 WHERE t1.ID = t2.ID;
  3. SELECT t1.ID, (SELECT t2.ID FROM t2 WHERE ID = t1.ID) FROM t1;

  4. --构造环境,进行验证
  5. DROP TABLE t1;
  6. CREATE TABLE t1 (ID INT);
  7. INSERT INTO t1 VALUES (1);
  8. INSERT INTO t1 VALUES (2);
  9. INSERT INTO t1 VALUES (3);
  10. COMMIT;

  11. DROP TABLE t2;
  12. CREATE TABLE t2 (ID INT );
  13. INSERT INTO t2 VALUES (1);
  14. INSERT INTO t2 VALUES (2);
  15. INSERT INTO t2 VALUES (NULL);
  16. COMMIT;

  17. --执行如下,发现两者并不等价。
  18. SELECT t1.ID, t2.ID FROM t1, t2 WHERE t1.ID = t2.ID;
  19.         ID ID
  20. ---------- ----------
  21.            1 1
  22.            2 2
  23.          
  24. SELECT t1.ID, (SELECT t2.ID FROM t2 WHERE ID = t1.ID) FROM t1;

  25.         ID (SELECTT2.IDFROMT2WHEREID=T1.ID)
  26. ---------- --------------------------------
  27.          1 1
  28.          2 2
  29.          3

  30. --实际上标量子查询只和外关联语句完全等价,具体试验如下:
  31. SELECT t1.ID, t2.ID FROM t1, t2 WHERE t1.ID = t2.ID(+);

  32.         ID ID
  33. ---------- ----------
  34.            1 1
  35.            2 2
  36.            3
  37. SELECT t1.ID, (SELECT t2.ID FROM t2 WHERE ID = t1.ID) FROM t1;

  38.         ID (SELECTT2.IDFROMT2WHEREID=T1.ID)
  39. ---------- --------------------------------
  40.            1 1
  41.            2 2
  42.            3

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1071303/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 函数索引陷阱
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6040916