Mysql 子查询混淆

Mysql 子查询混淆,mysql,sql,Mysql,Sql,我试图了解子查询是如何工作的,但当我尝试使用子查询时,它似乎不起作用。我试过了,但还是出错了。我很确定我有正确的密码。非常感谢任何关于我错在哪里的指点 以下是我正在研究的问题: 仅使用子查询,显示所有订单的OrderID、OrderDate和ShippedDate 由居住在美国的员工提交。按OrderDate对输出进行排序 下面是我的子查询: SELECT OrderID, OrderDate, ShippedDate FROM Orders WHERE Country = (SELECT

我试图了解子查询是如何工作的,但当我尝试使用子查询时,它似乎不起作用。我试过了,但还是出错了。我很确定我有正确的密码。非常感谢任何关于我错在哪里的指点

以下是我正在研究的问题:

仅使用子查询,显示所有订单的OrderID、OrderDate和ShippedDate 由居住在美国的员工提交。按OrderDate对输出进行排序 下面是我的子查询:

SELECT OrderID, OrderDate, ShippedDate

FROM Orders

WHERE Country =

(SELECT Country

FROM Employees

WHERE Country = 'USA');

当您应该在EmployeeID或任何字段上加入时,您正在加入国家/地区,例如,选择EmployeeID中的EmployeeID所在位置

您使用的方式与USA和USA进行匹配,结果不正确,因为任何两项以USA为国家的记录都将加入。

试试看

SELECT OrderID, OrderDate, ShippedDate

FROM Orders

WHERE EmployeeID IN

(SELECT EmployeeID

FROM Employees

WHERE Country = 'USA');
在本例中,您同时使用EmployeeID和In


子查询查找美国的EmployeeID列表。然后它使用该列表从orders表中选择美国员工子集所做的订单。

尝试将country=更改为country INAL。因此,您可能需要尝试另一个子查询,因为存在对YRU子查询的不必要的表扫描。订单中是否存在country桌子如果没有,是什么键将Orders表连接到EmployeeID表?EmployeeID在两个表中,因此尝试使用EmployeeID而不是Country,但返回的结果为null,我确定这是不正确的。也许我很困惑,但我不需要使用Orders表和Employees表来解决此问题吗?谢谢。现在我明白你的意思了。谢谢你的回复。