2014-12-07 91 views
0

我有两个表 - 字符串的表1和表2的字符串。用第二个查找表解码一个表的SQL查询

Table 1: 
+-------+-------+-------+-------+-------+ 
|  | col A | col B | col C | col D | 
+-------+-------+-------+-------+-------+ 
| row 1 |  1 |  |  |  | 
| row 2 |  |  2 |  |  | 
| row 3 |  8 |  3 |  |  | 
| row 4 |  9 |  |  4 |  | 
+-------+-------+-------+-------+-------+ 

Table 2: 
+-------+-------+--------------+ 
|  | col A | col B  | 
+-------+-------+--------------+ 
| row 1 |  1 | dog   | 
| row 2 |  2 | cat   | 
| row 3 |  3 | zebra  | 
| row 4 |  4 | donkey  | 
| row 5 |  8 | horse  | 
| row 6 |  9 | honey badger | 
+-------+-------+--------------+ 

是否有SQL查询将返回以下内容?

+-------+--------------+-------+--------+-------+ 
|  | col A  | col B | col C | col D | 
+-------+--------------+-------+--------+-------+ 
| row 1 | dog   |  |  |  | 
| row 2 |    | cat |  |  | 
| row 3 | horse  | zebra |  |  | 
| row 4 | honey badger |  | donkey | horse | 
+-------+--------------+-------+--------+-------+ 

此刻我是SELECT * IN Table_1。 然后查询Table_2六次以获得结果。有更加优雅的方式吗?

我想要使用SELECT * - 我不想在查询中指定表标题(因为有50多个表标题)。

+0

这种设计可能有合法的原因,但列举的列经常暗示 – Strawberry 2014-12-07 09:39:24

回答

0

查找所有列的唯一方法是提及SQL查询中的所有列。 这可能与一个做左连接的每一列,或者与相关子查询:

SELECT (SELECT colB FROM Table2 WHERE colA = Table1.colA) AS colA, 
     (SELECT colB FROM Table2 WHERE colA = Table1.colB) AS colB, 
     (SELECT colB FROM Table2 WHERE colA = Table1.colC) AS colC, 
     ... 
FROM Table1 

不能使用SELECT *。如果您不知道Table1的列,可以从数据库中读取它们,并动态构建查询。

相关问题