如何从 SQL 表中选择特定行并连接 SQL 服务器中的多个表?
Posted
技术标签:
【中文标题】如何从 SQL 表中选择特定行并连接 SQL 服务器中的多个表?【英文标题】:How to select specific row from SQL table and join multiple tables in SQL server? 【发布时间】:2019-04-14 14:05:47 【问题描述】:我正在使用 Northwind 数据库来学习 SQL Server。我正在尝试运行 SQL 查询,以便我可以从Employees 表中选择特定的员工(EmployeeID=1),并从Orders 表中选择与该员工相关的每个订单,它是如何运送(运送方式),运送它的公司,从订单日期到发货日期的总天数。对于我有以下查询,我不确定我的查询是否正确。有人可以验证一下吗?
我尝试在查询下运行
SELECT Employees.EmployeeID,
Orders.OrderID,DATEDIFF(DAY,Orders.OrderDate,Orders.ShippedDate) AS 'Date
Diff',
Orders.ShipVia,Shippers.ShipperID,Shippers.CompanyName FROM Employees
LEFT JOIN Orders ON Employees.EmployeeID=Orders.EmployeeID
LEFT JOIN Shippers ON Orders.ShipVia=Shippers.ShipperID
WHERE Employees.EmployeeID =1
GROUP BY
Orders.ShipVia,Shippers.ShipperID,Shippers.CompanyName,Employees.EmployeeID,Orders.OrderID,Orders.OrderDate,Orders.ShippedDate
【问题讨论】:
你的GROUP BY
似乎是多余的。
@GordonLinoff .. 另一种方法是什么?只需删除 Group BY... 我在想是否有其他方法可以解决这个问题?
你没有使用任何聚合函数那么你为什么要使用 group by ..没有聚合它会改变结果
@KedarLimaye.. 你能详细说明一下吗?
是否有您准备查询的特定要求?
【参考方案1】:
这里有一些使用 GROUP BY 子句的规则-
1) 一个 SELECT 语句子句,将查询结果分成多组行,通常是为了对每个组执行一个或多个聚合。 SELECT 语句每组返回一行。
2) 指定列或列上的非聚合计算。此列可以属于表、派生表或视图。该列必须出现在 SELECT 语句的 FROM 子句中,但不需要出现在 SELECT 列表中。
3) 列必须出现在 SELECT 语句的 FROM 子句中,但不要求出现在 SELECT 列表中。但是,列表中任何非聚合表达式中的每个表或视图列都必须包含在 GROUP BY 列表中
这些是 SQL Server 相关文档中的一些要点
希望这能解决您的问题或清除您的概念。
更多信息在- https://docs.microsoft.com/en-us/sql/t-sql/queries/select-group-by-transact-sql?view=sql-server-2017
【讨论】:
感谢您的解释和链接以上是关于如何从 SQL 表中选择特定行并连接 SQL 服务器中的多个表?的主要内容,如果未能解决你的问题,请参考以下文章
用于从连接表中进行选择的 T-SQL 查询,其中有可变数量的参数?
SQL Server:从一个表中复制新添加的行并自动插入到另一个表中