【问题标题】:SQL Server inner join returns the same row repeatedly in all the columnSQL Server 内连接在所有列中重复返回同一行
【发布时间】:2018-07-10 13:09:14
【问题描述】:

我写这个查询是为了做一个inner join:

select firstname 
from employees  
inner join orders on Employees.employeeid = orders.employeeid

结果是所有列中的同一行。

怎么了?

【问题讨论】:

  • 你能提供一个minimal reproducible example吗?
  • 如果该查询为整个数据集返回相同的值,那么您的所有员工都具有相同的名字。简单地说。
  • 所以我认为它只是按名称对列进行排序,它也包含其他名称
  • 在 SO 中询问之前检查您的列值和结果。

标签: sql sql-server inner-join


【解决方案1】:

据推测,您的订单比员工多。因此,一名员工有很多订单。

当你运行时:

select e.firstname 
from employees e inner join
     orders o
     on e.employeeid = o.employeeid;

然后你会得到一个所有名字的列表——所以一个员工的名字将被重复,每个订单一次。如果您只需要 distinct 值的列表,则可以改用 select distinct

【讨论】:

    【解决方案2】:

    由于订单表中有更多行与该员工相关, 可能有助于理解:

    SELECT Employees.firstname,Employees.employeeid,
    orders.orderid,orders.employeeid
    FROM employees
    INNER JOIN orders
    ON Employees.employeeid=orders.employeeid
    

    【讨论】:

      猜你喜欢
      • 2021-03-07
      • 2012-05-13
      • 2015-07-26
      • 2018-04-08
      • 2019-03-08
      • 2014-09-09
      • 2014-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多