如何在SQL中从多个表中选择几乎相同名称的同一列?

时间:2017-07-05 06:19:04

标签: sql

我想从很多表中选择一个2列。

例子

ng-model

等...

我的查询将是

Table_2017-01
id   name   value

Table_2017-02
id   name   value

Table_2017-03
id   name   value

但我想知道是否有可能像

SELECT name, value 
FROM Table_2017-01, Table_2017-02, Table_2017-03

我知道这最后一个查询是不可能的,如果对这个问题存在查询,对我来说可能会更容易,因为我可以有很多表只有一部分名称不同。

2 个答案:

答案 0 :(得分:0)

要选择具有相同名称的多列,您必须将该表作为前缀,如:

SELECT `Table_2017-01.name`, `Table_2017-02.name`, `Table_2017-03.name` FROM Table_2017-01,`Table_2017-02, Table_2017-03

如果您希望将它们放在一个列中,请使用Union

(SELECT `Table_2017-01.name` from Table_2017-01)
Union
(SELECT `Table_2017-02.name` from Table_2017-02)

答案 1 :(得分:0)

这取决于您的数据库。甲骨文f.e.有一个包含所有表的数据字典。 因为我比其他人更了解oracle,所以我使用它作为例子:

SELECT TABLE_NAME FROM ALL_TABLES WHERE TABLE_NAME LIKE 'Table_2017-%';

现在我有时会使用以下方法:

我构建了一个选择列表并将它们激活到数据库中:

  • 通过Excel(此处未说明)
  • 通过SQL

    选择   '选择'' || TABLE_NAME ||''' TABLE_NAME,NAME,VALUE FROM' ||   TABLE_NAME   ||' UNION' FROM ALL_TABLES TABLE_NAME LIKE' Table_2017 - %';

现在您可以将结果复制到您的数据库中(别忘了删除最后一个" UNION")

  • 通过程序(python,Lazarus,c#..无论如何,需要相同的视图)

但请注意:它快速而且脏,列名和类型必须匹配。