使用 JOIN 语句时,三个表中的数据重复 [英] Data from three tables duplicates when a JOIN statement is used

查看:75
本文介绍了使用 JOIN 语句时,三个表中的数据重复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我使用 JOIN 从我的表中检索数据时,行会重复.桌子一共三张.

when I retrieve data from my tables using JOIN, the rows duplicates. The tables are three in number.

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    |

这是我的查询语句,从三个表中选取一些数据

This is my query statement to select some data from the three tables

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;

输出

上面的查询产生重复的答案

The query above produces a duplicate answer

| 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. join 是从这样的三个表中选择数据的最佳方式吗?
  3. 如何进行查询以获得所需的输出?

推荐答案

如何使用select distinct m.StuID?

你可以试试这样的

SELECT distinct 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;

这篇关于使用 JOIN 语句时,三个表中的数据重复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆