Sql 关键字';左';
追根究底想弄明白这一点,谷歌搜索只会导致更复杂的例子 我连接了两张桌子,它们连接得很好。教授要求我们列出orders表中发货日期为空的行,或者用练习中的话“尚未发货的订单” Join工作正常,直到我添加IS NULL行,然后我得到错误: Msg 156,第15级,状态1,第13行 关键字“LEFT”附近的语法不正确。 我用了20种不同的方式写了这篇文章,花了一下午的时间在谷歌上搜索,但还是无法消除错误。我知道这很简单,但是Sql 关键字';左';,sql,database,sql-server-2008,Sql,Database,Sql Server 2008,追根究底想弄明白这一点,谷歌搜索只会导致更复杂的例子 我连接了两张桌子,它们连接得很好。教授要求我们列出orders表中发货日期为空的行,或者用练习中的话“尚未发货的订单” Join工作正常,直到我添加IS NULL行,然后我得到错误: Msg 156,第15级,状态1,第13行 关键字“LEFT”附近的语法不正确。 我用了20种不同的方式写了这篇文章,花了一下午的时间在谷歌上搜索,但还是无法消除错误。我知道这很简单,但是 SELECT customers.customer_id,
SELECT
customers.customer_id,
customers.name,
customers.phone,
orders.order_id,
orders.order_date,
orders.shipped_date
FROM
orders
WHERE
orders.shipped_date IS NULL
LEFT OUTER JOIN customers ON customers.customer_id=orders.customer_id
LEFT JOIN
应位于WHERE
子句之前
SELECT customers.customer_id,
customers.name,
customers.phone,
orders.order_id,
orders.order_date,
orders.shipped_date
FROM orders
LEFT OUTER JOIN customers
ON customers.customer_id=orders.customer_id
WHERE orders.shipped_date IS NULL
有关联接的其他信息,请参见
select
from
join
where
group by
having
order by
您不能混合该顺序。为了澄清左连接,“左”端的每个记录(来自源),而不考虑右端的匹配(连接到) 所以,如果你想交换,比如,给我所有的客户,不管有没有订单存档,你会这样做
Select
C.Customer_ID,
C.Name,
C.Phone,
O.Order_Date
from
Customers C
LEFT JOIN Orders O
on C.Customer_ID = O.Customer_ID
将显示所有客户,如果存在订单,也将显示该日期
您要查找的只是一个列表,其中列出了所有尚未发货的订单以及该订单是针对谁的。这将是一个站立的内部连接,因为你希望双方都存在匹配
Select
C.Customer_ID,
C.Name,
C.Phone,
O.Order_Date
from
Orders O
INNER JOIN Customers C
on O.Customer_ID = C.Customer_ID
where
O.Shipped_Date IS NULL
因此,本例中的WHERE子句显式位于主“FROM”表源“Orders”(别名为“O”)上。并且您只想要那些尚未发货的,因此只关心O.shipped\u Date为空