Mysql 使用第二个查找表对表进行SQL查询解码

Mysql 使用第二个查找表对表进行SQL查询解码,mysql,sqlite,Mysql,Sqlite,我有两个表——ints表1和字符串表2 Table 1: +-------+-------+-------+-------+-------+ | | col A | col B | col C | col D | +-------+-------+-------+-------+-------+ | row 1 | 1 | | | | | row 2 | | 2 | | | | row 3 |

我有两个表——ints表1和字符串表2

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 |
+-------+-------+--------------+
+-------+--------------+-------+--------+-------+
|       |    col A     | col B | col C  | col D |
+-------+--------------+-------+--------+-------+
| row 1 | dog          |       |        |       |
| row 2 |              | cat   |        |       |
| row 3 | horse        | zebra |        |       |
| row 4 | honey badger |       | donkey | horse |
+-------+--------------+-------+--------+-------+
是否存在将返回以下内容的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 |
+-------+--------------+-------+--------+-------+
目前我正在
选择表1中的*
。 然后查询表2六次,得到结果。还有更优雅的方式吗

+-------+--------------+-------+--------+-------+
|       |    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*——我不想在查询中指定表标题(因为有50多个表标题)。

查找所有列的唯一方法是提及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 |
+-------+--------------+-------+--------+-------+
这可以通过为每列提供一个左联接或使用相关子查询来完成:

+-------+--------------+-------+--------+-------+
|       |    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 (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

您不能使用
选择*
。如果您不知道表1中的列,可以从数据库中读取它们,并动态构造查询。

这种设计可能有合理的原因,但枚举列通常会提出相反的建议
+-------+--------------+-------+--------+-------+
|       |    col A     | col B | col C  | col D |
+-------+--------------+-------+--------+-------+
| row 1 | dog          |       |        |       |
| row 2 |              | cat   |        |       |
| row 3 | horse        | zebra |        |       |
| row 4 | honey badger |       | donkey | horse |
+-------+--------------+-------+--------+-------+