標量子查詢(二)

LuiseDalian發表於2014-01-16
標量子查詢要避免單行子查詢返回多行

點選(此處)摺疊或開啟

  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部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1071315/,如需轉載,請註明出處,否則將追究法律責任。

相關文章