【发布时间】:2015-08-18 00:26:22
【问题描述】:
我的 MySQL 数据库中有这些表:
总表:
+----generalTable-----+
+---------------------+
| id | scenario | ... |
+----+----------+-----+
| 1 | facebook | ... |
| 2 | chief | ... |
| 3 | facebook | ... |
| 4 | chief | ... |
Facebook 表:
+----facebookTable-----+
+----------------------+
| id | expiresAt | ... |
+----+-----------+-----+
| 1 | 12345678 | ... |
| 3 | 45832458 | ... |
主桌:
+------chiefTable------+
+----------------------+
| id | expiresAt | ... |
+----+-----------+-----+
| 2 | 43547343 | ... |
| 4 | 23443355 | ... |
基本上,通用表包含一些(显然)通用数据。基于generalTable.scenario,您可以在其他两个表中查找更多详细信息,这些表在某些列中很熟悉(例如expiresAt),但在另一些列中则不然。
我的问题是,如何在一次查询中得到generalTable的joined数据和正确的明细表。
所以,我想要这样的查询:
SELECT id, scenario, expiresAt
FROM generalTable
JOIN facebookTable
ON generalTable.id = facebookTable.id
JOIN chiefTable
ON generalTable.id = chiefTable.id
还有这样的输出:
| id | scenario | expiresAt |
+----+----------+-----------+
| 1 | facebook | 12345678 |
| 2 | chief | 43547343 |
| 3 | facebook | 45832458 |
| 4 | chief | 23443355 |
但是,这不起作用,因为 facebookTable 和 ChiefTable 都有不明确的列名“expiresAt”。为了便于使用,我想保持这种方式。结果表也应该只有一列“expiresAt”,该列会自动填充来自 facebookTable 或 ChiefTable 的正确值。
我有一种感觉,这实际上是一项非常容易的任务,但对我来说这是一个漫长的工作日,而且你知道你会思考一个问题这么久却看不到可能简单的解决方案的日子。那么,你能帮帮我吗?
另外,很抱歉英语不好
【问题讨论】: