Sql 何鸿燊在过去几年中多次购买。而且,这比必要的要复杂得多。@gordon linoff我认为你错了-这是要求:“1号客户在2018年、2019年和2020年下订单。而2号客户只在2018年下订单。结果只需显示Laura向Dooki索要的2号客户(2019年没
Sql 何鸿燊在过去几年中多次购买。而且,这比必要的要复杂得多。@gordon linoff我认为你错了-这是要求:“1号客户在2018年、2019年和2020年下订单。而2号客户只在2018年下订单。结果只需显示Laura向Dooki索要的2号客户(2019年没,sql,sql-server,select,where-clause,Sql,Sql Server,Select,Where Clause,何鸿燊在过去几年中多次购买。而且,这比必要的要复杂得多。@gordon linoff我认为你错了-这是要求:“1号客户在2018年、2019年和2020年下订单。而2号客户只在2018年下订单。结果只需显示Laura向Dooki索要的2号客户(2019年没有下订单),所以我测试了这个,添加了一个根本没有订单的客户。我运行了查询,但它没有显示新客户,因此我认为gordon是正确的,因为我需要显示所有在2019年没有下订单的客户(这将包括任何从未下过订单的客户)是-这是因为内部联接-可能有左联接、右
何鸿燊在过去几年中多次购买。而且,这比必要的要复杂得多。@gordon linoff我认为你错了-这是要求:“1号客户在2018年、2019年和2020年下订单。而2号客户只在2018年下订单。结果只需显示Laura向Dooki索要的2号客户(2019年没有下订单),所以我测试了这个,添加了一个根本没有订单的客户。我运行了查询,但它没有显示新客户,因此我认为gordon是正确的,因为我需要显示所有在2019年没有下订单的客户(这将包括任何从未下过订单的客户)是-这是因为内部联接-可能有左联接、右联接、完全外部联接等,你应该考虑一下:),内部连接意味着两个表的共同点感谢Gordon,这似乎成功了。为了更好地理解这一点,你能解释一下“选择1”的作用吗?@LauraRoscoe。
exists
子查询只检查行的存在,而不是特定的值。1
是最简单的输入方式。你可以用任何东西。我建议不要使用NULL
,因为我认为这很容易混淆(NULL
不应表示存在有效值)。讽刺的是,在某些数据库中,表达式甚至可能生成错误,例如1/0
——但也不要使用它,除非是为了向某人炫耀。
SELECT c.*
FROM Customer c
INNER JOIN CustomerOrder co ON c.CutomerID = co.CutomerID
INNER JOIN Shipment sh ON co.shipmentID = sh.ShipmentID
WHERE YEAR(sh.DepartDate) <> 2019
SELECT c.*
FROM Customer c
INNER JOIN CustomerOrder co ON c.CutomerID = co.CutomerID
INNER JOIN Shipment sh ON co.shipmentID = sh.ShipmentID
WHERE YEAR(sh.DepartDate) <> 2019 AND c.CutomerID
NOT IN (SELECT c.*
FROM Customer c
INNER JOIN CustomerOrder co ON c.CutomerID = co.CutomerID
INNER JOIN Shipment sh ON co.shipmentID = sh.ShipmentID
WHERE YEAR(sh.DepartDate) = 2019)
SELECT c.*
FROM Customer c
WHERE NOT EXISTS (SELECT 1
FROM CustomerOrder co JOIN
Shipment sh
ON co.shipmentID = sh.ShipmentID
WHERE c.CustomerID = co.CustomerID AND
sh.DepartDate >= '2019-01-01' AND
sh.DepartDate < '2020-01-01'
);
select c.*
from customers c
left outer join (
select customerID
from CustomerOrder o
join Shipment s on s.ShipmentID=o.ShipmentID
where DepartDate>='2020-01-01' and DepartDate<'2021-01-01'
) x on x.customerID=c.customerID
where x.customerid is null