我有几个表有不同数量和类型的列,以及一个共同的列.
+--------+---------+------------+-------------+
| person | beardID | beardStyle | beardLength |
+--------+---------+------------+-------------+
+--------+-------------+----------------+
| person | moustacheID | moustacheStyle |
+--------+-------------+----------------+
Run Code Online (Sandbox Code Playgroud)
我想获取与共享列的给定值匹配的所有结果.我可以使用这样的多个select语句来做到这一点:
SELECT * FROM beards WHERE person = "bob"
Run Code Online (Sandbox Code Playgroud)
和
SELECT * FROM moustaches WHERE person = "bob"
Run Code Online (Sandbox Code Playgroud)
但这需要多个mysql API调用,这似乎效率低下.我希望我可以使用UNION ALL在单个API调用中获取所有结果,但UNION要求表具有相同数量和相似类型的列.我可以编写一个SELECT语句,通过添加具有NULL值的列来手动填充每个表的结果,但是对于具有更多列的更多表,这将很快变得无法管理.
我正在寻找一个大致如下的结果集:
+--------+---------+------------+-------------+-------------+----------------+
| person | beardID | beardStyle | beardLength | moustacheID | moustacheStyle |
+--------+---------+------------+-------------+-------------+----------------+
| bob | 1 | rasputin | 1 | | |
+--------+---------+------------+-------------+-------------+----------------+
| bob | 2 | samson | 12 | | …Run Code Online (Sandbox Code Playgroud)