我想知道是否有人可以提供帮助。
请参阅以下内容:
SELECT id,name FROM words;
ID,姓名
1,仍然
2,闪闪发光
3,Fizzy
SELECT * from translation;
words_id,lang_id,翻译
1,1,ASTIll
1,2,BStill
2,1,ASparkling
我需要如下结果:
id,name,lang_id,translation
1,Still,1,ASTIll
2,Sparkling,1,ASparkling
3,Fizzy,NULL,NULL
我试过的查询
SELECT id,name,lang_id,translation FROM words LEFT JOIN translation ON words_id = id AND lang_id = 1;
http://sqlfiddle.com/#!9/f544b/3
非常感谢
答案 0 :(得分:0)
您的条件lang_id=1
会将您的LEFT JOIN
变为INNER 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