代码之家  ›  专栏  ›  技术社区  ›  Shawn

查询多个表并将结果合并到存储过程的一个返回表中?

  •  0
  • Shawn  · 技术社区  · 14 年前

    3 回复  |  直到 14 年前
        1
  •  7
  •   Eric Petroelje    14 年前

    你要找的手术是 UNION UNION ALL

    SELECT * FROM (
     SELECT col1, col2 FROM table1
     UNION ALL
     SELECT col1, col2 FROM table2
     UNION ALL
     SELECT col1, col2 FROM table3
    ) all_tables
    WHERE all_tables.col1 = 'something'
    

    如果你使用 工会 而不是 联合所有人 ,数据库将消除多个表中可能存在的重复行。如果你知道不会有任何重复,使用 因为它通常要快得多。

        2
  •  1
  •   Eden    14 年前
    Select myColumn FROM Table1
    UNION Select myColumn FROM Table2
    UNION Select myColumn FROM Table3 
    

    …等等

    --注意:所有列名必须相同,并且必须在每个表中才能工作

        3
  •  1
  •   Paul Abbott    14 年前

    您甚至不需要存储过程…只需使用联合查询。

    select field1, field2 from table1 where table1.field1=criteria
    union
    select field1, field2 from table2 where table2.field1=criteria
    union
    select field1, field2 from table3 where table3.field1=criteria
    etc...