in_tablesource_to_equijoin.sql 1.2 KB

123456789101112131415161718192021222324252627
  1. /* postgres can not */
  2. USE plato;
  3. $r4_20 = (SELECT optkey FROM Input WHERE optkey BETWEEN 4 AND 20);
  4. $r6_20 = (SELECT key FROM Input WHERE optkey BETWEEN 6 AND 20);
  5. $r8_20 = (SELECT key FROM Input WHERE optkey BETWEEN 8 AND 20);
  6. $r10_20 = (SELECT optkey FROM Input WHERE optkey BETWEEN 10 AND 20);
  7. $r1_16 = (SELECT optkey FROM Input WHERE optkey BETWEEN 1 AND 16);
  8. $r1_12 = (SELECT key FROM Input WHERE optkey BETWEEN 1 AND 12);
  9. SELECT key FROM Input WHERE
  10. (key + 1) IN $r4_20 AND -- key = [3, 19] -- 2 joinable
  11. optkey IN $r6_20 AND -- key = [6, 19]
  12. key IN /*+ COMPACT() */ $r8_20 AND -- key = [8, 19] -- 1 nonjoinable (due to COMPACT)
  13. (optkey + 3) IN $r10_20 AND -- key = [8, 17] -- 3 joinable
  14. (key + 4) NOT IN $r1_12 AND -- key = [9, 17]
  15. key IN $r10_20 AND -- key = [10, 17]
  16. (optkey IN $r1_16 OR key IN $r1_16) AND -- key = [10, 16] -- 1 nonjoinable (not SqlIn)
  17. (key - 1) IN $r1_12 AND -- key = [10, 13] -- 2 joinable
  18. (key - 3) NOT IN $r8_20 -- key = [10]