php - 使用 JOIN 语句时,三个表中的数据重复

标签 php mysql sql

当我使用 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 | 

问题

  1. 我哪里出错了?
  2. 连接是从这样的三个表中选择数据的最佳方式吗?
  3. 如何进行查询以获得所需的输出?

最佳答案

不管你信不信,我认为 Students mINNER JOIN 之间的逗号正在发挥作用。您现在从两个单独的元组中进行选择,在任何子句上连接,而不是将第一个表连接到第二个表到第三个表。

关于php - 使用 JOIN 语句时,三个表中的数据重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437766/

相关文章:

PHP -\u00f8 (ø) 变为 u00f8

java - 按另一个表中的最大值或最小值排序

sql - 我可以在 "IN"MySQL 语句中使用通配符吗?

php - 如何在 mysql 或数组中查找未知字符

php - SMTP Telnet和PHP无法从HELO中获得任何响应

mysql - Hibernate:通过工资(非主要)查询获取实体

java - 我如何使用 slick 3.0 一次返回一行?

php - 跟踪在线进行的 Paypal 付款

使用 session 和重定向的 PHP 错误处理

php - 使用 PDO 创建 MySQL 表时出错