我想显示的OrderID所有订单的那个地方后放置放置所有的订单底部美元的市场.
我使用了fllowing查询
select
Orders.OrderID
from
Orders
where
Orders.OrderDate > (
select
Orders.OrderDate
from
Orders
where
Orders.CustomerID = (
select
Customers.CustomerID
from
Customers
where
Customers.CompanyName='Bottom-Dollar Markets'
)
);
Run Code Online (Sandbox Code Playgroud)
但它给出了错误子查询回溯多个值
我正在使用northwind数据库
无论你的子查询可以返回多行,当您使用的是标量操作相比,这是不允许的- >和=,分别在你的情况.
试试这个:
select Orders.OrderID
from Orders
where Orders.OrderDate > (
select max(Orders.OrderDate)
from Orders
where Orders.CustomerID in (
select Customers.CustomerID
from Customers
where Customers.CompanyName='Bottom-Dollar Markets'
)
);
Run Code Online (Sandbox Code Playgroud)
您实际上并不需要比较所有订单,因为如果客户的订单大于Bottom-Dollar Markets 的最新订单,那么它跟随它也比早先的订单更大.
或者,这将适用于JOIN:
select Orders.OrderID
from Orders
where Orders.OrderDate > (
select max(Orders.OrderDate)
from Orders join Customers on Orders.CustomerID = Customers.CustomerID
where Customers.CompanyName='Bottom-Dollar Markets'
);
Run Code Online (Sandbox Code Playgroud)