2

我想显示在底部美元市场下的所有订单之后下达的所有订单的OrderID

我使用了以下查询

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'
            ) 
        );

但它使错误子查询返回多个值

我正在使用北风数据库

4

1 回答 1

6

您的两个子查询都可能返回多行,这在您使用标量比较操作时是不允许的 ->=,在您的情况下。

试试这个:

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'
  )
);

您实际上不需要比较所有订单,因为如果客户的订单大于底部美元市场的最新订单,那么它也将大于之前的订单。

或者,这将与 a 一起使用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'
);
于 2013-03-03T22:36:24.237 回答