Mysql 使用第二个查找表对表进行SQL查询解码
我有两个表——ints表1和字符串表2Mysql 使用第二个查找表对表进行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 |
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 |
+-------+--------------+-------+--------+-------+