MySQL左连接返回错误

问题描述:

也许我只是没有做过长时间的左连接,但我很困惑。MySQL左连接返回错误

这里是我的表:

Table: user_phones 

user phone  carrier 
---------------------------- 
danny 5045551234 Verizon 
mom  5551234567 T-Mob 
tony 5121234567 T-Mob 

Table carriers 

carrier email_exchange 
-------------------------- 
Verizon vtext.com 
T-Mob  tmomail.net 

这里是我的查询:

SELECT user, CONCAT(phone, '@', email_exchange) AS sms 
LEFT JOIN carriers ON (user_phones.carrier = carriers.carrier) 
FROM user_phones 

而且我不断收到回:

“LEFT JOIN运营商ON(user_phones.carrier = carriers.carrier)FROM user_phones'

我知道这是一个笨蛋监督,但变化无济于事(将ON条款放在括号内等)不起作用。

我在哪里滑倒?

+1

我想你需要* FROM *之前* LEFT JOIN * – pd40

+0

如下文所述,我的脑海里吹了垫圈我很迷惑'FROM'和'WHERE'。告诉你这是一个笨蛋的疏忽。 – Anthony

+0

“键盘和椅子之间发生错误。”我们都去过那里。 – Malvolio

你错过了FROM user_phones

SELECT a.`user`, 
     CONCAT(a.`phone`, '@', b.`email_exchange`) AS sms 
FROM user_phones a LEFT JOIN carriers b 
     ON a.carrier = b.carrier 

把你FROM条款您LEFT JOIN

SELECT `user`, CONCAT(phone, '@', email_exchange) AS sms 
FROM user_phones LEFT JOIN carriers ON user_phones.carrier = carriers.carrier 

A小调的建议,然后将使用自动增量id场在carriers表,更新user_phones.carrier持有那些id S,并加入上。 HTH

尝试:

SELECT user, CONCAT(phone, '@', email_exchange) AS sms 
FROM user_phones 
LEFT JOIN carriers ON (user_phones.carrier = carriers.carrier) 

w3schools - Left Join

+0

情况总是如此吗?将左连接放在后面?为什么我会这样做,我觉得我已经做了相反的事情? – Anthony

+0

是的,你需要指定我猜你可以称之为“基本”表或起点。 – Seth

+0

好吧,我已经完成了这个简单的查询,这已经有一段时间了。我正在将我的'FROM'与我的'WHERE'混在一起。让笑声开始。 – Anthony