我的任务是选择在1997年2月的第二个十年制作的订单清单(其ID,客户名称和订单日期)
这是我的要求:
select Orders.OrderID, Customers.CustomerName, Orders.OrderDate
from Orders
where Orders.OrderDate between '1997-02-10' and '1997-02-20'
join Customers
on Orders.CustomerID = Customers.CustomerID;
我哪里错了?
提前感谢大家的帮助。
答案 0 :(得分:0)
您必须重新定义您的选择语句:
select Orders.OrderID, Customers.CustomerName, Orders.OrderDate
from Orders
join Customers
on Orders.CustomerID = Customers.CustomerID;
where Orders.OrderDate between '1997-02-10' and '1997-02-20'
JOIN子句必须包含在FROM部分中。
我建议不要将BETWEEN用于约会。
select Orders.OrderID, Customers.CustomerName, Orders.OrderDate
from Orders
join Customers
on Orders.CustomerID = Customers.CustomerID;
where Orders.OrderDate >= cast('1997-02-10' as date)
and Orders.OrderDate cast('1997-02-20' as date);
答案 1 :(得分:0)
你的结构有误。您可以随后使用 WHERE 的 FROM 即可。 ON 是来自的一部分。在哪里过滤你的结果。如果没有结果,你就无法使用:
select Orders.OrderID, Customers.CustomerName, Orders.OrderDate
from Orders join Customers
on Orders.CustomerID = Customers.CustomerID
where Orders.OrderDate between '1997-02-10' and '1997-02-20';
答案 2 :(得分:0)
如上文评论所示,WHERE
条件必须在 JOIN
子句之后写入。或者,您也可以作为WHERE
的一部分投入JOIN
条件:
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
JOIN Customers
ON Orders.CustomerID = Customers.CustomerID
AND Orders.OrderDate between '1997-02-10' and '1997-02-20'
如果您在查询中有多个联接,并希望快速过滤掉不需要的记录 - 在应用任何其他JOIN
之前,这可能会特别有用。