2012-05-09 55 views
0

我想从名字表中拉first_name,但只有当users_id在订单表和order_num = 1,但我不断收到错误。MYSQL加入与错误

SELECT first_name 
FROM customers 
LEFT JOIN orders 
ON orders.order_id = customers.cust_id 
AND orders.order_num = 1 

,但我的查询返回多个值,而不只是一个,喜欢它忽略orders.order_num=1 - 没有我的查询看的权利,或者是有什么我做错了吗?

+1

也许将只包括记录这个图表可以有所帮助:http://stackoverflow.com/questions/4715677/difference-between-left-join-and-right-join-in-sql-server/4715847#4715847 –

回答

2
SELECT first_name 
FROM customers 
LEFT JOIN orders 
ON orders.order_id = customers.cust_id 
WHERE orders.order_num = 1 
+0

我一直在wrestli连接几个小时。我认为最后一个'WHERE'子句将用于第一个表?无论如何,它虽然工作! – Derp

+2

嘿@Derp,请标记如果这是解决您的问题。激励人们不断给出优秀的答案! –

+0

是的,我想有一个10分钟的时间限制 - 不会让我xD - TY WojtekT – Derp

0
AND orders.order_num = 1 

应该

WHERE orders.order_num = 1 
0

试试这个。

SELECT first_name 
FROM customers 
INNER JOIN orders 
ON (orders.cust_id = customers.id) 
WHERE orders.order_num = 1 
GROUP BY customers.id 

INNER JOIN其中ON条件匹配

WHERE将结果限制为仅在order_num = 1

GROUP BY可以确保你只能得到1分的结果为每一个客户