【发布时间】:2016-05-29 02:24:47
【问题描述】:
如何将 2 个表合并为 1 个?也许使用 INNER JOIN?请指教。谢谢。
例如,使用我刚刚创建的以下数据库:
表 1
+----------------------+
| Places |
+----------------------+
| Cupertino |
| BJ's Restaurant |
| Cupertino Inn |
| Outback Steakhouse |
+----------------------+
表 2
+----------------------+
| Distant |
+----------------------+
| 0.6 km |
| 1.3 km |
| 1.3 km |
| 1.1 km |
+----------------------+
选择语法并组合此表输出将是这样的:
+---------------------+---------+
| Places | Distant |
+---------------------+---------+
| Cupertino | 0.6 km |
| BJ's Restaurant | 1.3 km |
| Cupertino Inn | 1.3 km |
| Outback Steakhouse | 1.1 km |
+---------------------+---------+
**编辑:抱歉忘记添加 id。更新如下:
表 1
+-----------+--------------------+
|Places_Id | Places |
+-----------+--------------------+
| 1 | Cupertino |
| 2 | BJs Restaurant |
| 3 | Cupertino Inn |
| 4 | Outback Steakhouse |
+-----------+--------------------+
表 2
+------------+----------+
|Distant_Id | Distant |
+------------+----------+
| 1 | 0.6 km |
| 2 | 1.3 km |
| 3 | 1.3 km |
| 4 | 1.1 km |
+------------+----------+
Places_Id 和 Distant_Id 是 Auto Increment。很抱歉,伙计们,我的大脑在很长一段时间没有进行相关编程后突然停止工作。事实证明,在将 id 添加到数据库后,这很容易。谢谢大家的答案。坚持下去。
Select A.Places, A.Places_Id, B.Distant, B.Distant_Id from Table1 A, Table2 B where B.Distant_Id = A.Places_Id
【问题讨论】:
-
没有外键是不可能的
-
这种设计很糟糕,您应该始终添加在两个关系表之间关联的外键。将列 ID 添加到表 1,将 place_id 添加到表 2
-
SQL 表代表 无序 集。无法(正确)组合这些表,因为值之间没有对应关系。
-
您是否向我们展示了这两个表的所有列?您根据什么规则合并记录?为什么将“Cupertino”与“0.6 km”而不是“1.1 k`m”结合起来?
-
因为这个值来自google距离矩阵api(距离)和places api(地点)。这意味着结果是从当前位置到目标位置的距离输出。当前位置是 Apple One 无限循环。这就是为什么您会在 Apple One 无限循环中看到持续 0.6 公里的库比蒂诺。