比较同一列的两列

Amb*_*lam 1 sql northwind

我想显示的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数据库

Yuc*_*uck 5

无论你的子查询可以返回多行,当您使用的是标量操作相比,这是不允许的- >=,分别在你的情况.

试试这个:

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)