繁体   English   中英

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

[英]How to select the same column from multiple table with almost same name in SQL?

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

为例

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

但我想知道是否有可能

SELECT name, value FROM LIKE Table_%

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

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

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)

这取决于您的数据库。 Oracle fe具有一个包含所有表的数据字典。 因为我比其他人更了解oracle,所以我将其用作示例:

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

现在,我有时使用以下几种方式:

我建立一个选择列表,并将它们发射到数据库中:

  • 通过Excel(此处未解释)
  • 通过SQL

    SELECT'SELECT'''|| TABLE_NAME ||'''TABLE_NAME,NAME,VALUE FROM'|| TABLE_NAME ||' UNION'FROM ALL_TABLES WHERE TABLE_NAME像'Table_2017-%';

现在您可以将结果复制到数据库中(不要忘记删除最后一个“ UNION”)

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

但是请注意:它又快又脏,列名和类型必须匹配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM