gpt4 book ai didi

SQL比较查询

转载 作者:行者123 更新时间:2023-12-04 03:12:03 24 4
gpt4 key购买 nike

我正在练习查询以提高我的 SQL 技能(我是初学者),我遇到了这个问题,我需要有关使用 Northwind 数据库的帮助。请求的查询应该:

为拥有以下职位的员工提供员工姓名和居住城市销售给同城客户。

我为此写的是:

    USE Northwind;
SELECT DISTINCT FirstName, LastName, e.City
FROM Employees e
INNER JOIN Orders o ON e.EmployeeID = O.EmployeeID
INNER JOIN Customers c ON o.CustomerID = c.CustomerID
INNER JOIN Customers ON c.City = e.City
WHERE e.City = ANY(SELECT Customers.City FROM Customers);

我返回了 6 名员工,但我不确定他们是否正确,我相信我的 WHERE 语句也是错误的。

基本上我的问题是,我是否使用了正确的连接语句以及如何使用 WHERE 语句过滤结果?我不确定如何将一个特定记录与其他记录进行比较。来自 Java 背景,我习惯于 for 循环,它可以检查每个单独的“对象”(记录)与另一个“对象”的特定字段。在这种情况下,我想知道如何使用 Customers 表中记录的 City 属性来检查 Employees 表中每条记录的 City 属性。感谢任何和所有建议,谢谢!

最佳答案

我认为你只需要加入客户表一次并且同时满足加入要求(与员工在同一个订单和同一个城市)作为你的加入要求,例如

 SELECT DISTINCT FirstName, LastName, e.City
FROM Employees e
INNER JOIN Orders o ON e.EmployeeID = O.EmployeeID
INNER JOIN Customers c ON o.CustomerID = c.CustomerID AND c.City = e.City

或者,您可以仅在订单 ID 上加入客户并在 where 子句中过滤城市要求。在性能方面应该没有任何区别,但是如果您要在某个时候回顾脚本,它可能会帮助您记住

 SELECT DISTINCT FirstName, LastName, e.City
FROM Employees e
INNER JOIN Orders o ON e.EmployeeID = O.EmployeeID
INNER JOIN Customers c ON o.CustomerID = c.CustomerID
WHERE e.City = C.City

我认为让您头脑清醒的重要部分是,在您加入表之后,它实际上是一个包含来自两个列(或多个包含多个联接)的表。内部连接条件将过滤掉两个表之间不匹配的行,然后您可以比较列

关于SQL比较查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44414622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com