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