当我使用 JOIN 从表中检索数据时,行会重复。这些 table 共有三张。
Students
--------
StuID | Name |
1 | Appiah John |
2 | Minister A |
Levels
------
| LevelID | Level | Year | StuID |
| 08 | 100 | 2010 | 2 |
| 83 | 200 | 2011 | 1 |
| 45 | 200 | 2011 | 2 |
Ranks
-----
| RankID | Rank | StuID |
| 101 | 1st | 1 |
| 404 | 4th | 2 |
这是我的查询语句,用于从三个表中选择一些数据
SELECT
m.StuID,
n.Level,
n.Year,
o.Rank
FROM
Students m
INNER JOIN
Levels n
ON
m.StuID=n.StuID
INNER JOIN
Ranks o
ON
m.StuID=o.StuID
WHERE
m.StuID=2;
输出
上面的查询产生重复的答案
| StuID | Level | Year |Rank |
| 2 | 100 | 2010 | 4th |
| 2 | 200 | 2011 | null |
| 2 | 100 | 2010 | 4th |
| 2 | 200 | 2011 | null |
期望输出
因此我希望输出如下所示
| StuID | Level | Year |Rank |
| 2 | 100 | 2010 | 4th |
| 2 | 200 | 2011 | null |
问题
- 我哪里出错了?
- 连接是从这样的三个表中选择数据的最佳方式吗?
- 如何进行查询以获得所需的输出?
最佳答案
不管你信不信,我认为 Students m
和 INNER JOIN
之间的逗号正在发挥作用。您现在从两个单独的元组中进行选择,在任何子句上连接,而不是将第一个表连接到第二个表到第三个表。
关于php - 使用 JOIN 语句时,三个表中的数据重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437766/