2017-07-18 43 views
0

我想知道如果有人可以帮助。MySQL加入需要显示所有记录从左表

请参阅以下内容:

SELECT ID,名称从言论;

ID,名称

1,仍

2,香槟酒

3,碳酸

SELECT *从翻译;

words_id,LANG_ID,翻译

1,1,阿斯蒂尔

1,2 BStill

2,1,ASparkling

我需要结果如下面:

ID,名称LANG_ID,翻译

1,然而,如图1所示,阿斯蒂尔

2,香槟酒,1,ASparkling

3,汽水,NULL,NULL

查询我已尝试过

SELECT id,name,lang_id,translation FROM words LEFT JOIN translation ON word_id = id AND lang_id = 1;

http://sqlfiddle.com/#!9/f544b/3

非常感谢

+1

...问题是? – Uueerdo

+0

@Uueerdo这个'lang_id = 1',事实上没有字符串从名称到翻译的比较 – Edward

+0

上面显示的查询没有与SQLFiddle中的连接条件相同的连接条件。你错过了'lang_id = 1'这个词。 –

回答

0

你的条件lang_id=1将您LEFT JOININNER JOIN。原因是当条件不满足(即translation表中没有输入)时,它不会显示它。如果要显示左侧表格上的所有内容,请删除条件lang_id=1

SELECT id,name,lang_id,translation 
FROM words 
LEFT JOIN translation ON words_id=id 

如果你需要这个条件,你可以把它放在子查询中。

SELECT id,name,lang_id,translation 
FROM words w 
LEFT JOIN (
    SELECT * 
    FROM translation 
    WHERE lang_id = 1 
) t ON t.word_id = w.id