子查询混淆

时间:2014-06-16 01:13:51

标签: mysql sql

我试图了解子查询的工作原理,但是当我尝试使用子查询时似乎不起作用。我尝试了,但它出现了错误。很确定我有正确的代码。任何指针我错误的地方都非常感激。

Heres是我正在研究的问题:

  1. 仅使用子查询,显示所有订单的OrderID,OrderDate和ShippedDate 由居住在美国的员工提交。在OrderDate
  2. 上对输出进行排序

    这是我的子查询:

    SELECT OrderID, OrderDate, ShippedDate
    
    FROM Orders
    
    WHERE Country =
    
    (SELECT Country
    
    FROM Employees
    
    WHERE Country = 'USA');
    

2 个答案:

答案 0 :(得分:0)

当您加入EmployeeID或其他任何字段时,您正在加入国家/地区。 WHERE EmployeeID IN(SELECT EmployeeID ...

你拥有它的方式与美国和美国相匹配,这将给出不正确的结果,因为美国作为国家的任何两条记录都会加入。

答案 1 :(得分:0)

尝试

SELECT OrderID, OrderDate, ShippedDate

FROM Orders

WHERE EmployeeID IN

(SELECT EmployeeID

FROM Employees

WHERE Country = 'USA');

在这种情况下,您使用的是EmployeeID和IN。

子查询在美国查找EmployeeID列表。然后,它使用该列表从Orders表中选择美国Employees子集所做的订单。