无法使用条件加入2个表。错误1064

时间:2017-01-24 13:48:16

标签: mysql sql

我的任务是选择在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;

我哪里错了?

提前感谢大家的帮助。

3 个答案:

答案 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之前,这可能会特别有用。