选择投影中列名称上的通配符

时间:2018-05-30 10:45:45

标签: sql postgresql

我有两张这样的表:

$yourInputArray = array("ABBA","SKY","BERN");

我想从Table1 : xA, yA, zA, xB, yB, zB Table2 : x1, y1, z1, x2, y2, z2 Table1插入数据,例如所有Table2列数据分别转到*B列,所有*1转到{{ 1}}以同样的方式。

我尝试了这个查询:

*A

但考虑到可维护性,是否有其他解决方案没有明确使用列名?假设我需要添加新列w1,w2,wA,wB。在这种情况下,我必须更改查询。

2 个答案:

答案 0 :(得分:2)

执行所需操作的唯一方法是使用动态SQL。我不确定这是否更易于维护。

但是为了可维护性,您应该明确列出所有列:

INSERT INTO Table2 (x1, y1, z1, x2, y2, z2)
     SELECT xB, yB, zB, xA, yA, zA
     FROM Table1;

答案 1 :(得分:0)

因为您正在将Table1的列的顺序映射到Table2的不同列的顺序。我建议你创建一个映射表Table1Table2Mapping

+--------------+ --------------+
| Table1Column | Table2Column  | 
+--------------+ --------------+
|x1            | xB            |
|y1            | yB            |
|z1            | zB            |
|x2            | xA            |
|y2            | yA            |
|z2            | zA            |
+--------------+----------------+

通过查询这两列来生成动态SQL。