ITPub博客

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

标量子查询(二)

原创 Oracle 作者:luisedalian 时间:2014-01-16 09:50:31 0 删除 编辑
标量子查询要避免单行子查询返回多行

点击(此处)折叠或打开

  1. DROP TABLE t1;
  2. DROP TABLE t2;
  3. CREATE TABLE t1(ID NUMBER, VALUE VARCHAR2(20));
  4. CREATE TABLE t2(ID NUMBER, VALUE VARCHAR2(20));
  5. INSERT INTO t1 VALUES (1, \'A\');
  6. INSERT INTO t1 VALUES (2, \'D\');
  7. INSERT INTO t1 VALUES (3, \'L\');
  8. INSERT INTO t2 VALUES (1, \'B\');
  9. INSERT INTO t2 VALUES (1, \'C\');
  10. INSERT INTO t2 VALUES (2, \'K\');
  11. COMMIT;

  12. --子查询返回了多行,出错
  13. SELECT t1.*, (SELECT ID FROM t2 WHERE t2.ID = t1.ID) FROM t1;

  14. ERROR at line 1:
  15. ORA-01427: single-row subquery returns more than one row

  16. --用如下小技巧改造SQL, 判断出t1 表哪个记录对应到t2 表返回多行。
  17. SELECT * FROM (SELECT t1.*, (SELECT COUNT(*) FROM T2 WHERE t2.ID = t1.ID) cnt FROM t1) WHERE cnt > 1;

  18.         ID VALUE CNT
  19. ---------- -------------------- ----------
  20.          1 A 2

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

上一篇: 标量子查询(一)
请登录后发表评论 登录
全部评论

注册时间:2012-02-06

  • 博文量
    1986
  • 访问量
    6040893